char byte = 0x80
if(byte == 0x80)
{
cout << "This message never gets printed!";
}
十六進制值0x80
相當於二進制到1000 0000
,這明顯適合於一個字節。使用==運算符將char與0x80進行比較總是會導致錯誤?
然而,編譯器警告我關於與條件行:
warning: comparison is always false due to limited range of data type
爲什麼在這種情況下,有條件的虛假的結果呢?
是0x80
在有條件擴展到像0x80000000
?
是否可以使用==
運營商來檢查char
是否等於0x80
?
'char'可以有符號或無符號。 – chris
是的。但即使'0x80'解析爲負數,我們不僅僅比較'char'的內容是否等於文字?如果沒有,請解釋! :) –
@CoryKlein:'0x80'是一個'int'。 –