在C中转换为unsigned char

时间:2012-08-03 10:39:17

标签: c++ c casting

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

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

我将所有三个变量存储在一个数组中。

我得到的输出(查看数组中的值;数组是unsigned char数组):

0x00 
0x00
0x01

虽然我在期待:

0xF1 
0xF1
0xE3

有人可以帮助我解决我的错误吗?

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:10)

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