这个C 程序结果是??

来源:百度知道 编辑:UC知道 时间:2024/05/28 16:02:21
main()
{int t ,a=2,b=3,c=-2;
while(a>b>c)
{t=a;a=b;b=t;c++;}
printf("%d,%d,%d",a,b,c);
}

以前发过一回 请算出结果的朋友解释下 a>b>c是否成立?? 以前有的朋友说a>b成立 小弟没看明白 怎么回事.请高手指点. 要求解过程 谢谢大家帮忙!!
问题关键在于(a>b>c)当a>b为0时 是否继续判断???

首先,这程序是可以编译通过的.

1楼的理解是对的,但是结果并不正确.

第一次循环时,由于>运算符的结合性是自左至右,a>b>c等同于(a>b)>c当a=2,b=3,c=-2时,先判断a>b不成立,该表达式的值为0,而0>-2而第一次通过.交换后,a=3,b=2,c=-1.

接下来再判断表达式a>b>c的值,记住,这时a,b,c的值已改变了.

如此循环下去,最后得到的结果是 a=2,b=3,c=0

a=2,b=3,a>b的结果当然不成立,也就是假,所以a>b的结果是0,而0是大于-2,也就是C.所以结果是a=3,b=2,c=-2

结果是 2 3 -2,因为a>b>c不成立,程序不会执行循环体。

首先,程序编译便通不过,a>b>c在C语言中能行吗?

同意1楼的

就是连续判断啊,先判断第一个>的两个数字,然后把结果和第二个>后的数字判断了!!