【发布时间】:2016-02-25 05:18:51
【问题描述】:
我有这部分 if 语句,但我得到了一个奇怪的输出。
int x = 10;
if(1 < x < 5){
printf("F\n");
}
为什么打印“F”?如果 x 大于 1 但不小于 5,逻辑上不是 if 语句为假吗?
【问题讨论】:
-
我猜你的意图是确定这些值是否是可传递的(在数学术语中)。我最初也是这样做的。
标签: c if-statement
我有这部分 if 语句,但我得到了一个奇怪的输出。
int x = 10;
if(1 < x < 5){
printf("F\n");
}
为什么打印“F”?如果 x 大于 1 但不小于 5,逻辑上不是 if 语句为假吗?
【问题讨论】:
标签: c if-statement
在 C 中,您不能像这样链接比较。表达式1 < x < 5 被计算为(1 < x) < 5:所以对于x = 10,表达式为(1 < 10) < 5。 (1 < 10) 为真,C 表示为值1,因此表达式简化为1 < 5。这总是正确的,如果执行了你的 printf()。
正如 level-999999 所说,在 C 中,您需要明确地将单个比较与 && 和 || 结合起来。
【讨论】:
如果您使用的是 C,您应该将条件分解为两个参数:
if ( x > 1 && x < 5) {
printf("F\n");
}
【讨论】:
x 的值如何,你写的表达式都是真的。