c如何评估小于和大于表达式?
how does c evaluate less than and more than expretion?
我想知道这段C语言代码中i是如何求值的?
int x = 10, y = 20, z = 5, i;
i = x < y < z;
printf("%d\n",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 Each of the operators < (less than), > (greater than), <= (less than
or equal to), and >= (greater than or equal to) shall yield 1 if the
specified relation is true and 0 if it is false.107) The result has
type int.
如果你将语句重写为
i = x < y && y < z;
那么表达式的结果将等于 0,因为 y 不小于 z。
我想知道这段C语言代码中i是如何求值的?
int x = 10, y = 20, z = 5, i;
i = x < y < z;
printf("%d\n",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 Each of the operators < (less than), > (greater than), <= (less than or equal to), and >= (greater than or equal to) shall yield 1 if the specified relation is true and 0 if it is false.107) The result has type int.
如果你将语句重写为
i = x < y && y < z;
那么表达式的结果将等于 0,因为 y 不小于 z。