斯盖拉阿斯丁完美音调3:有关C语言的问题4

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/07 02:56:21
char a=5,b=7,c;
c=a|b>>3;
printf("%d\n",c);
输出的结果是?为什么?

a 00000101
b 00000111
b>>3 00000000(右移三位)
a|b>>3 00000101
c=5
结果为 5

>>运算比|优先
所以先是b>>3 00000000
然后a|b>>3 00000101
结果当然就是5了

5
Press any key to continue

结果是5 |的运算级较低,先进行<<运算

感觉输出会错误。不用理我,丢了3年了。

5
c=a|b>>3其中>>优先级大于|,b(二进制)向右移三位变为0再与a按位或