为什么以下C代码的输出为1(True)?
#include<stdio.h>
main()
{
int a, b = 1, c = 3, d = 2;
a = b < c < d;
printf("%d",a);
}
虽然相同的表达式给出了&#34; False&#34;在python中。
答案 0 :(得分:3)
从左到右检查评估顺序。
b<c
为真,因此返回1.
然后
1<d
是的,所以你得到1
所以
a=1
确保您使用关系运算符后返回的值将为true或false。即0或1
答案 1 :(得分:2)
声明
a=b<c<d;
相当于
a = ( b < c ) < d;
与
不一样a = ( b < c ) && ( c < d );
根据C标准(6.5.8关系运营商)
6每个运营商&lt; (小于),&gt; (大于),&lt; =(小于 或者等于),并且&gt; =(大于或等于)如果是,则产生1 指定的关系为true,如果为false,则为0 .107)结果为 输入int。
所以在这个陈述中
a = ( b < c ) < d;
当b小于c时,子表达式(b
答案 2 :(得分:-2)
a = ( b < c && c < d)
应返回您想要的值。