C4018:类内有符号、无符号不匹配

C4018: Signed,unsigned mismatch inside a class

本文关键字:无符号 不匹配 符号 C4018      更新时间:2023-10-16
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) intunsigned值进行比较。

只需将for循环索引声明为size_t变量:

for (size_t i = 0; i < S.size(); i++)
//...

在大多数情况下,你的比较不会有问题;但最好不要忽视这些警告,因为它们可以在你最意想不到的时候跳起来"咬你

"。