今天遇到这样一道题:
在C语言中,表达式23|2^5的值是()
A 18
B 1
C 23
D 32
正确答案选C,为什么呢?一分钟讲完咱们就下课
“|”、“^”是逻辑位运算符
C语言里,逻辑位运算符“|”、“^”的定义是这样的:
** “|” 运算符(位或)用于对两个二进制操作数逐位进行比较,并根据如表格所示的换算表返回结果。**
“|”运算符
第一个数的位值第二个数的位值运算结果111101011000
“^”运算符(位异或)用于对两个二进制操作数逐位进行比较,并根据如表格所示的换算表返回结果。
“^”运算符
第一个数的位值第二个数的位值运算结果110101011000
回头来看这道题:
“^”优先级高于“|”
下图以算式的形式解析了 2 和 5 进行位异或运算的过程。![](https://img-blog.csdnimg.cn/20210810123247838.png)
2 和 5 进行位异或运算,得到 7;
下图以算式的形式解析了 7 和 23 进行位或运算的过程。![](https://img-blog.csdnimg.cn/20210810123346286.png)
所以,答案是 23,选 C。
有兴趣的可以看看 JS &、|、^和~(逻辑位运算符),
里面写了JS的位或运算符,JS的位或运算符与C语言是一样的。
版权归原作者 一名12岁的C++爱好者 所有, 如有侵权,请联系我们删除。