2012-08-03 89 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