2013-04-25 40 views
-1

我試圖將2個unsigned char保存到一個無符號短。 因此,我所做的就是保存第一個字符,然後將它與第二個字符進行位移。C++:移位一個未簽名的短

代碼:

unsigned char a = 8; 
unsigned char b = 2; 
unsigned short c = a; 
c << 8; 
c |= b; 

但我與位位移第一個問題。 運行此代碼:

unsigned char a = 8; 
unsigned short c = a; 
c << 8; 
cout << c; 

我希望得到2048 我甚至在此查看:http://www.miniwebtool.com/bitwise-calculator/bit-shift/?data_type=10&number=8&place=8&operator=Shift+Left。 但是我得到了8.我做錯了什麼?

回答

6
c <<= 8; 

c << 8; 

第二種情況不修改c的值。我本來希望你的編譯器提醒你。

+0

Thx快速回答!我現在覺得很蠢:p – orukinawa 2013-04-25 14:21:40

+1

沒問題,我也犯了同樣的錯誤。 – john 2013-04-25 14:22:02