我看到一些代碼看起來像這樣不爲0xFF等於負0:爲什麼在C++
Object *area = new Object[n];
memset(area, 0xff, sizeof(Object) * count);
所以這個填充對象數組的每一個領域與1位。再後來有多個地方檢查,如果一個對象的字段尚未通過檢查〜0(負零)來填充:
const unsigned int NULL_INDEX = ~0;
...
if(object.field == NULL_INDEX) {...}
該Object類的字段是unsigned int類型。我很困惑,爲什麼0xff可以被評估爲等於0,在unsigned int?我看到另一個post在2的補碼系統上談論0xff等於-1,並發現另一個post,我認爲這意味着C++程序是否將0xff解釋爲-1或〜0取決於系統?
C++中的可移植方式在填充0xff時檢查整數究竟是什麼?這應該檢查無符號int或signed int?我很困惑...
'〜0'不爲負0. –
〜反轉每一位。 – Phil1970
最常見的表示(2的補碼)中沒有負數的整數。 – Phil1970