【C语言学习疑难杂症】专栏说明:
分享C语言阶段一些容易被大部分同学忽略的重点、难点知识,帮助C语言知识学习的拔高。
专栏地址:
//求以下代码的输出
int main()
{
char a = 0x95, b, c;
b = (a & 0xf) << 4;
c = (a & 0xf0)>>4;
a = b | c;
printf("%x", a);
return 0;
}
16进制的95是二进制的1001 0101
然后0xf是二进制的0000 0000...0000 1111(32位)
然后a & oxf,会发生整型提升
1111 1111...1001 0101
0000 0000...0000 1111
-------------------------------
0000 0000...0000 0101
0000 0000...0101 0000
赋值给b,发生截断,得到
b=