C语言——运算符操作时的类型转换问题

以取反操作为例,来看下面这一个例子:

下面程序的输出结果是多少    250    

#include 
int main()
{
unsigned char a = 0xA5;
unsigned char b = ~ a >> 4 + 1;
printf(“b = %d\n”, b);
return 0;
}


解析:考察两个知识点:一是类型转换问题,二是运算符优先级的问题,优先级~ > + > 》

0000000010100101取反1111111101011010,再右移(4+1)位,即0000011111111010,要注意取反操作时,会对a进行整形提升,a是无符号的,提升时左边补零

你可能感兴趣的:(C/C++)