3

我面临以下问题:尝试强制转换为 unsigned char 时,我得到了意外的值。我正在使用的代码:

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

有人可以帮我解决我做错了什么吗?

4

2 回答 2

12

运算符&&&在整数上的工作方式不同。您的操作数首先转换为 bool(零/非零),然后and一起编辑。

于 2012-08-03T10:40:53.303 回答
10

&&布尔值和运算符;1如果它的两个操作数都非零,则它给出,0否则。您需要按位和运算符,&它在其操作数的每一位中给出10

于 2012-08-03T10:41:38.307 回答