我试图理解为什么以下代码不会在指定的位置发出警告.
//from limits.h
#define UINT_MAX 0xffffffff /* maximum unsigned int value */
#define INT_MAX 2147483647 /* maximum (signed) int value */
/* = 0x7fffffff */
int a = INT_MAX;
//_int64 a = INT_MAX; // makes all warnings go away
unsigned int b = UINT_MAX;
bool c = false;
if(a < b) // warning C4018: '<' : signed/unsigned mismatch
c = true;
if(a > b) // warning C4018: '<' : signed/unsigned mismatch
c = true;
if(a <= b) // warning C4018: …Run Code Online (Sandbox Code Playgroud) 难道保证(-x) % m,在这里x和m在C++中积极标准(C++ 0x中)为负,等于-(x % m)?
我知道它在我知道的所有机器上都是正确的.