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
か?