这是我准备考试中的一道题:
int val = 0;
int x = 0;
int y = 1;
if (x < val < y)
printf(" true ");
else
printf(" false ");为什么会这样呢?我尝试更改x和val,但它忽略了这些更改,只要y大于0 (所以1、2、3...)这句话是真的。例如:if (3 < 9 < 2)将为true。
发布于 2021-01-18 04:38:02
( 2 < 9 < 3 )的计算结果为( ( 2 < 9 ) < 3)。
在第一步中,2 < 9被求值为true,它被表示为整数值1,并导致第二步的((1) < 3)。
这显然是真的。
您可能想要像((x < val) && ( val < y))这样的东西。
发布于 2021-01-18 04:39:42
首先检查x和val。如果它的值是正确的,则将其转换为1并使用y进行检查。
发布于 2021-01-18 10:09:06
第一个是检查x是否< value。如果为真,则返回1,因此下一步是检查1是否< y。
https://stackoverflow.com/questions/65765661
复制相似问题