C4018:类内有符号、无符号不匹配
C4018: Signed,unsigned mismatch inside a class
class SchoolManagementSystem
{
private:
vector<Student> S;
vector<Course> C;
public:
SchoolManagementSystem();
int getNumberOfStudents() const;
};
SchoolManagementSystem::SchoolManagementSystem() : S(), C()
{}
int SchoolManagementSystem::getNumberOfStudents()
const
{
int numberOfStudents = 0;
for ( int i = 0; i < S.size(); i ++)
numberOfStudents ++;
return numberOfStudents;
}
我正在与一个介绍学校管理系统的班级合作。(在此之上,我也有一些学生和课程课程( 事情是在这一行:对于(int i = 0; i 我收到错误警告C4018:"<":有符号/无符号不匹配。这个错误是什么?它会影响我的结果吗?我怎样才能修复它?
std::vector::size()
函数返回unsigned
类型的size_t
类型。因此,在比较i < S.size()
中,您将 (signed) int
与unsigned
值进行比较。
只需将for
循环索引声明为size_t
变量:
for (size_t i = 0; i < S.size(); i++)
//...
在大多数情况下,你的比较不会有问题;但最好不要忽视这些警告,因为它们可以在你最意想不到的时候跳起来"咬你
"。相关文章:
- 是什么导致了这种使用三进制而不是短整型的有符号int到无符号int转换
- C4018:类内有符号、无符号不匹配
- 在函数中返回无符号字符数组,但不返回指针
- 如何返回实际值(在我的例子中是无符号字符数组)而不是来自 C++ 函数的指针?
- 为什么我可以隐式地将字符*转换为常量字符*,但不能将无符号字符*
- 为什么QByteArray的大小是"int"而不是"无符号int"
- 将 QByteArray 转换为无符号短:不符合预期
- 我应该使用无符号字符而不是 int 来存储永远不会大于 255 的值吗?
- 为什么这个"uint64_t"模板专用化与 Mac 平台上的"无符号长"不匹配?
- C++ 错误:对 '(std::string {aka std::basic_string}) (<char>无符号整数、字符)的调用不匹配
- 警告 C4018:">=":VSC++ 2010 中的有符号/无符号不匹配
- 有符号/无符号不匹配,并且函数在转换为函数时不带2个参数
- 有符号/无符号 int 不匹配
- 断言(true)警告有符号/无符号不匹配
- 获取规则与无符号 int 匹配的次数
- 警告 C4018:'>':有符号/无符号不匹配
- C++警告 C4018:"<":有符号/无符号不匹配
- “有符号/无符号不匹配”警告 (C4018),循环递减
- C++有符号/无符号不匹配
- 警告 C4018:'<':有符号/无符号不匹配