在C语言中将变量转换为无符号字符类型

3
我面临如下问题:尝试将数据类型转换为无符号字符时,得到了意想不到的值。我使用的代码如下:
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

“有人能不能好心地帮我看看我做错了什么?”
2个回答

12

运算符&&&在整数上处理方式不同。首先将操作数转换为布尔值(零/非零),然后进行and运算。


已经是漫长的一天了,我完全忘记我没有使用位运算符了....非常感谢。 - Bo.

10

&&布尔与运算符;如果它的两个操作数都是非零的,则返回1,否则返回0。你需要使用按位与运算符&,它在每个位上分别返回10


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接