我下周将参加一个C大学考试,我正在查看旧的考试试卷,其中一个问题给出了这个零散的代码.
int a=2, b=-1, c=0;
if (a-2||b&&c||a){
printf("True\n");
} else {
printf("False\n");
}
Run Code Online (Sandbox Code Playgroud)
我们必须确定这段代码的输出是什么,但if语句对我来说没有任何意义,如果我遇到的语句非常具体,就像说
if( x == 0)
Run Code Online (Sandbox Code Playgroud)
我不知道这是在寻找我唯一的假设是它将永远是真的.我是对的还是还有更多呢?
glg*_*lgl 12
这项任务有两个目标:
&&具有更高的优先级||,所以这个陈述相当于
a-2 || (b&&c) || a
Run Code Online (Sandbox Code Playgroud)
true如果任何值为真,它将评估.
因为a==2,a-20 c是0,所以b && c也是0.
所以我们有0 || 0 || a,这a是2 ,这是真的.