我有两个例子:
unsigned long l = ULONG_MAX;
char c = -1;
if (c == l)
std::cout << "-1 = 4,294,967,295?";
输出:"-1 = 4,294,967,295?">
unsigned char l = 255;
char c = -1;
if (c == l)
std::cout << "-1 = 4,294,967,295?";
输出:
为什么第一个示例生成输出,而第二个示例不生成输出?
C 编译器转换示例: 在第一种情况下:if ((unsigned long)c == l)
在第二种情况下if ((int)c == (int)l)