2012-08-03 110 views
3

我面臨以下問題:當試圖轉換爲無符號字符時,我得到意外的值。我正在使用的代碼:Casting to unsigned char in C

unsigned char MyVal1 = ((0xF1E3 && 0xff00) >> 8); 
unsigned char MyVal2 = (unsigned char)((0xF1E3 && 0xff00) >> 8); 
unsigned char MyVal3 = (unsigned char)((0xF1E3 && 0xff)); 

我將所有三個變量存儲在一個數組中。

我得到的輸出(看着數組中的值;數組是無符號字符數組):

0x00 
0x00 
0x01 

,而我所期待的:

0xF1 
0xF1 
0xE3 

可能有人樣幫助我我在做什麼錯了?

回答

12

運營商&&&在整數上不起作用。您的操作數首先轉換爲bool(零/非零),然後將它們合併在一起。

+0

Checkmate ....這是一個漫長的一天,我完全忘了我沒有使用按位運算符....非常感謝..... – 2012-08-03 10:44:06

10

&&布爾值和運算符;如果它的兩個操作數都不爲零,則給出1,否則給出0。您想要按位和運算符&,它在其操作數的每個位中給出10