帮忙解读一下c语言的几个表达式

来源:百度知道 编辑:UC知道 时间:2024/06/16 18:15:35
a=5+(c=6) (表达式的值是7,a的值是7,c的值是6) 前面俩的值完全不明白

main()
{
int a,b,c;
a=2;b=c=3;
printf("%d",c>=b>=a?1:0);
}结果是0,为什么

就这俩,帮我解读一下,告诉我为什么是这个结果,谢谢了
我看的书上面写的是7啊,我也不明白,所以来问了

表达式c>=b>=a?1:0相当于:(c>=b)>=a?1:0
c>=b成立,故c>=b的值为1,【(c>=b)>=a?1:0】可以转化为1>=2,显然不成立。

故结果是0。

/*
看这句
printf("%d",c>=b>=a?1:0)
现在a=3,b=3,c=3
c>=b是对的,结果是True(1)
而a是整型,c>=b是布尔型,把true和2比较,c语言会把true转化为1,而1>=2是错的,所以输出的是0;
经过透彻的分析,这句应该改成:
printf("%d",(c>=b)&&(b>=a)?1:0)
*/

第一题打死我都不信结果为7...
第二题目楼上已说!

谁跟你说表达式的值是7,a的值是7?应该是11才对吧,赋值表达式的值就是赋值变量的值.所以c=6的值就是c的值6.a=5+6就等于11.整个表达式的值就是a的值,也是11.