目前,我正在cppinstitute.org上学习C语言认证课程。 在其中一个测验中,有一个问题如下,以识别输出。
int i = 1,j= 1;
int w1,w2;
w1 = (i>0) && (j<0) || (i<0) &&(j>0);
w2 = (i<=0) || (j>=0) && (i>=0) || (j<=0);
printf("%d",w1 == w2);
我认为程序应该在屏幕上打印0,但测验接受打印1作为答案。
我是否正确?如果没有,我错了? 提前谢谢!我是初学者。
答案 0 :(得分:0)
此处,&&
的优先级高于||
运算符。
所以,
w1 = (i>0) && (j<0) || (i<0) &&(j>0);
= 1 && 0 || 0 && 1;
= 0 || 0
= 0
和
w2 = (i<=0) || (j>=0) && (i>=0) || (j<=0);
= 0 || 1 && 1 || 0
= 0 || 1 || 0
= 1 || 0
= 1
因此,w1 == w2
变为假。因此,正确的输出为0。