我有以下代码片段:
#include <stdio.h>
int main(void) {
int x=3, y=4, z=6;
if (x < y < z) {
z = z+1;
printf("This if statement got hit. Value of z is %d\n", z);
}
if (z > y > x) {
printf("This if statement got hit. Value of z is %d", z);
z = z+2;
}
printf("Values: x=%d y=%d z=%d\n", x, y, z);
}
正如我所料,第一个if语句的计算结果为true。 z
递增。但是,第二个if语句不会评估为真。在我看来,逻辑是相反的,并且条件也应该被评估为真。最终的printf输出Values: x=3 y=4 z=7
。我期待Values: x=3 y=4 z=9
。
有人能说清楚为什么会这样吗?
干杯。
答案 0 :(得分:4)
从左到右评估。你可以写:(x
(x 为了得到你想要的东西,你应该写: if((x&gt; y)&amp;&amp;(y&gt; z)) 和 if((z&lt; y)&amp;&amp;(y&lt; x))