2014-03-03 35 views
0

我有一個變量的類型字節,並通過喜歡這裏字節變量值誤差

BYTE a; 
a=11111110; 

的價值,但是當我調試的代碼,我在visual c++看到的值是204,但它必須是244。 爲什麼價值不正確?

+0

C++不具備二進制文字的原生支持(假設這是你想要做什麼)。 –

+1

你如何得到204 ???????? (11111110 mod 256)= 198 –

回答

5

11111110是一個十進制數字,而不是一個二進制。

如果你想將它設置爲二進制11111110,使用0xfe代替。

在任何情況下,我不完全相信你有根據的事實,也說明它應該是244,其實254值正確。

這是因爲11111110 % 256198而不是204,最可能的情況是它會簡單地換行。事實上,在VC++ 2010,198是結果我從類似的代碼獲得:

#include <iostream> 
#include <windows.h> 
#include "stdafx.h" 
int _tmain(int argc, _TCHAR* argv[]) { 
    BYTE a; 
    a = 11111110; 
    std::cout << (int)a << '\n'; 
    return 0; 
}