char byte = 0x80
if(byte == 0x80)
{
cout << "This message never gets printed!";
}
十六进制值
0x80
在二进制中等同于1000 0000
,明显适合一个字节。然而,在带有条件的那一行,编译器会对我发出警告:
warning: comparison is always false due to limited range of data type
在这种情况下,条件为false的原因是什么?
0x80
是否会被扩展为类似于0x80000000
的内容?是否可以使用
==
运算符检查char
是否等于0x80
?
char
可以是有符号的或无符号的。 - chris0x80
解析为负数,我们只是比较char
的内容是否等于字面量吗?如果不是,请解释一下! :) - Cory Klein0x80
是一个整数(int)。 - Jesse Good