非在括号外面对哪个有效

img


最上面一题的答案为什么是0 1而不是0 0。!不是在最外面吗,对m和n哪个起作用

就是对后面括号里表达式的结果进行取反的意思

!对整个表达式起作用,但是&&运算只要前一个为错后面就不判断了,所以是0 1。如果把&&前面应该表达式写成正确的,(2>1),那么结果就为1 0。代码如下(希望对你有用)
#include<stdio.h>

void main(){
int a=2,b=1,c=3,d=4,m=1,n=1;
if(!((m=a>b) && (n=c>d))){
printf("%d %d\n",m,n);
}
}

img