我想知道如何在C语言中评估这段代码?
int x = 10, y = 20, z = 5, i;
i = x < y < z;
printf("%dn",i);
如果条件为真,则关系运算符的结果为整数1,否则为0。关系运算符从左到右求值
那么这个语句
i = x < y < z;
等价于
i = ( x < y ) < z;
由于x小于y所以也可以写成
i = 1 < z;
将变量I初始化为1,因为1小于5。
来自C标准(6.5.8关系操作符)
6各操作符<(小于),>(大于),<=(小于)或等于)和>=(大于或等于)将产生1,如果指定的关系为真,如果为假则为0int类型。
如果您将语句重写为
i = x < y && y < z;
则表达式的结果将等于0,因为y不小于z。