Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual c++ 警告C4018(';表达式';:有符号/无符号不匹配)和C4389(';运算符';:有符号/无符号不匹配)之间有什么区别_Visual C++_Compiler Warnings - Fatal编程技术网

Visual c++ 警告C4018(';表达式';:有符号/无符号不匹配)和C4389(';运算符';:有符号/无符号不匹配)之间有什么区别

Visual c++ 警告C4018(';表达式';:有符号/无符号不匹配)和C4389(';运算符';:有符号/无符号不匹配)之间有什么区别,visual-c++,compiler-warnings,Visual C++,Compiler Warnings,那么,警告和警告之间有什么区别呢 unsigned int uc = 0; int c = 0; if (uc < c) uc = 0; // C4018 我就是不明白。最大的区别在于生成这些诊断消息的警告级别。C4018为3级警告。属于“你不应该忽视的事情”类别。只要试一下uc=1和c=-1的代码,想想1怎么可能小于-1。几乎没有一个程序员期望这样的结果。这使得它成为一个bug生成器,值得一个可见的诊断 C4389为4级警告。属于“看起来错误,但无论如何可能有效”类别。操作数的有符

那么,警告和警告之间有什么区别呢

unsigned int uc = 0;
int c = 0;
if (uc < c) uc = 0;   // C4018

我就是不明白。

最大的区别在于生成这些诊断消息的警告级别。C4018为3级警告。属于“你不应该忽视的事情”类别。只要试一下uc=1和c=-1的代码,想想1怎么可能小于-1。几乎没有一个程序员期望这样的结果。这使得它成为一个bug生成器,值得一个可见的诊断

C4389为4级警告。属于“看起来错误,但无论如何可能有效”类别。操作数的有符号性不影响相等比较

默认警告级别为3,除非您更改了项目设置。这使您看到的是“不应忽略”诊断,而不是“无论如何可能有效”诊断

int a = 9;
unsigned int b = 10;
if (a == b)   // C4389