繁体   English   中英

在C中转换为unsigned char

[英]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, & ,它在每个操作数的位中给出10

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM