伤追人在线漫画:为什么会输出“0”?(C语言)

来源:百度文库 编辑:高考问答 时间:2024/05/12 03:59:20
为什么下面这段代码会输出“0”?
main()
{
int a=10,b=8,c=5,d;
d=(a>b>c);
printf("%d",d);
}
为什么会这样?

在编程里面,大部分的数学表达式在编程中是非法的(或者是不能被正确执行的),这里的a>b>c的流程是这样的:
1、先算a>b
10>8结果为真,所以等于1
(在C语言中真值为非0值(即不是0就为真),默 认为1;假值为0)
2、再把这个结果:1带进表达式,得:
1>c
1>5结果为假,所以为0

因为>关系运算符是计算顺序是从左到右,
所以先计算 a>b 因为是真所以结果是 1
再比较 1>c所以得到假,即0

在我们的c语言中,关系运算符是从左到右,a>b是真,得1,再用1和5比较,得假,所以为0.假如(a>b&&b>c),这样结果就是1了.

先计算 a>b 因为是真所以结果是 1
再比较 1>c所以得到假,即0