c语言输出

来源:百度知道 编辑:UC知道 时间:2024/07/06 16:08:53
#include <stdio.h>
main()
{ int a=5,b=4,c=3,d;
d=(a>b>c);
printf("%d\n",d);
}
输出结果为0,但a>b>c为ture,为什么为0呢?

a>b的结果是正确,也就是true,1。
然后系统再比较1>c,结果是false,0。
所以d得到的结果是,false,即0,而不是(a>b)&&(b>c)

a>b>c的写法貌似是错误的,如果要表示a是最大的,应该写成a>b&&b>c吧。。好像。。。一假期没看书了,都快忘光了。
a>b>c表示的是a>b结果为1 然后1>c,结果是0

a>b>c是逻辑表达式,真时值为1,假时值为0
a>b,值为1
1>c,值为0

> 操作符的结合性是从左到右,所以这个式子可以改写如下:

d=((a>b)>c);

a>b成立,所以(a>b)的值是1,所以上面的式子就变成了如下形式:
d=(1>c);

显然这是不成立的,所以d的值是0

楼上正解,因为不能执行,所以默认初始为0

这种写法不正确,首先判别为b>c得到1,那么1是小于a的,所以结果为0.必须改为a>b&&b>c