c语言题目,a=3,b=2,c=1,f=a>b>c+1,输出f为0,为什么?

#include<stdio.h>
void main()
{int a=3,b=2,c=1;
int f;
f=a>b>c+1;
printf("%d",f);}
求详解

这里涉及到两个知识点,一个是布尔型true和false转换成整数时是1和0.
另一个是运算符优先级的问题,比较运算符的优先级小于+-*/等优先级,这个你看看基本知识点。
所以这里,3>2 结果是true,强转为int就是1,1>1+1结果是false,强转为int就是0.基本知识要抓牢
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-30
f=a>b>c+1;计算步骤:

1、a>b,成立,所以表达式结果为1
2、c+1,表达式结果为2
3、a>b表达式结果>c+1,即1>2,不成立,所以表达式结果为0
4、把a>b>c+1表达式结果赋值给f,即f=0
要避免此种写法,会给阅读者带来麻烦的。如果你非要这样写,你可以加括弧了明确计算顺序,如此例可改写成f=(a>b)>(c+1),这样看上去就比不加括弧更清楚一些
第2个回答  2013-10-30
f=a>b>c+1;
首先a>b成立所以比较结果为1 那么a>b>c+1就转换为1>c+1
这里就不成立了所以比较结果就为0了 即a>b>c+1的最终值为0
所以f为0
相似回答