#include<stdio.h> void main() { int a = 7, b = 3; printf("%d", a & b + a * (!a | b)); }
为什么打印出的是0?不是(!a | b)中的!和a先结合吗?
不应该是这样printf("%d", 3 + 7 * 3)吗?
收起
- 首先括号的优先级最高,先计算括号内的; 然后括号内 ! 的优先级最高, 先计算 !a。 括号内相当于 0 | 3 - 0000 | 0011 = 0011 = 3 - 然后表达式 7 & 3 + 7 * 3 , 乘号的优先级最高,计算得出 7 & 3 + 21; - 接着表达式 7 & 3 + 21 ,加号的优先级最高,计算得出 7 & 24; - 最后 表达式 7 & 24; - 00000111 & 00011000 = 00000000 = 0【十进制数】
报告相同问题?