我想知道當8位值與16位值進行比較時會發生什麼。比較8位值與16位值
我會盡力解釋由代碼示例中的問題:
bool result;
unsigned char a_8bit = 0xcd;
unsigned short b_16bit = 0xabcd;
result = a_8bit < b_16bit;
可能的結果可能是:
- a_8bit被強制轉換爲無符號短隱式,並與b_16bit爲16位值。結果爲真
- b_16bit隱式轉換爲無符號字符並與a_8bit作爲8位值進行比較。結果是錯誤的
有沒有人有線索編譯器會用這段代碼做什麼?當然,我可以嘗試一下,但是這個代碼的不同編譯器有不同的解釋嗎?
將兩者的算術轉換爲int。然後鑄造成布爾。但int的大小是實現定義的 –
@Koushik沒有轉換爲'bool'。 '<'的結果已經有'bool'類型。 –