整数溢出 int 和 char



我有两个例子:

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)

最新更新