#include <stdio.h>
int main() {
int i =-1;
if(1< i <10){
printf("1");
} else {
printf("2");
}
}
expected output: 2 present output: 1
答案 0 :(得分:3)
在布尔表达式1 < i < 10
中从左到右进行评估,1 < i
为true(1)或false(0);因此,在随后的比较中,无论0 < 10
的值如何,1 < 10
和i
都始终为真。
因此,不能在不改变(可能纠正?)条件的情况下获得输出2
。
答案 1 :(得分:1)
替换为以下内容:
if ((i > 1) && (i < 10)) {
然后你可以通过向i
提供1到10之间严格包含的值(请建议一个更好的词)来触发else块。
由于运营商优先级,在不改变条件的情况下无法实现此目的。 (在每种情况下,整个条件都会变为真。)