C CLA认证考试的操作员优先级

问题描述 投票:-2回答:1

目前,我正在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作为答案。

我是否正确?如果没有,我错了?提前谢谢!我是初学者。

c operator-keyword
1个回答
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。

© www.soinside.com 2019 - 2024. All rights reserved.