[英]Casting to unsigned char in C
我面临以下问题:当尝试强制转换为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
有人可以帮我解决我做错了什么吗?
运算符&&
和&
在整数上的工作方式不同。 您的操作数被第一转换为bool(零/非零),然后and
编在一起。
&&
是布尔和运算符; 如果两个操作数都为非零,则给出1
,否则为0
。 你想要bitwise和operator, &
,它在每个操作数的位中给出1
或0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.