char byte = 0x80
if(byte == 0x80)
{
cout << "This message never gets printed!";
}
16 進数値0x80は 2 進数で に相当し1000 0000、明らかに 1 バイトに収まります。
ただし、コンパイラは条件付きの行について警告します。
warning: comparison is always false due to limited range of data type
この場合、条件の結果が false になるのはなぜですか?
0x80条件付きで次のように展開されています0x80000000か?
==演算子を使用して acharが等しいかどうかを確認することは可能です0x80か?