1.题目:设int a=0,b=0,m=0,n=0;,执行(m=a==b)/(n=a==b)后m和n的值分别?
2.代码+分析:
int main() {
//设int a=0,b=0,m=0,n=0;,执行(m=a==b)/(n=a==b)后m和n的值分别
int a = 0,b = 0,m = 0,n = 0,x;
x = (m = a == b) || (n = a == b);
printf("%d\n%d\n", m, n);
//分析:根据优先级口诀,括号第一,括号中关系比赋值高,然后逻辑或的短路现象要比运算符优先考虑
//1. a==b,关系运算的结果是逻辑值,0==0是真的1,所以m=1
//2.此时||的左边表达式结果为1,触发短路,右边表达式将不再执行
//3. 所以n的值没有变化还是0
}
3.截图: