请教c语言 for语句问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 09:42:26
#include<stdio.h>
main()
{ int a=1,b=2,c=2,t;
while(a<b<c){t=a;a=b;b=t;c--}
printf("%d,%d",x--,y);
}
这个程序的输出结果为 1,2,0 与我分析的不一致啊,那位高手给我讲讲这个程序是如何运行的。

x和y是什么东西?应该是printf("%d %d %d",a--,b,c)吧?
第一步不用说吧,第二步,因为<运算是有左向右,先判断a<b,成立,为真,值为1,再判断1<c,成立,为真,即while判断语句为真,执行后面的操作,t=a;a=b;b=t;c--,简单来说就是a、b值调换,c减一,得a=2,b=1,c=1。返回判断语句,先执行a<b,不成立,为假,值为0,再判断0<c,成立,为真,判断语句为真,执行循环命令,得a=1,b=2,c=0。第三步,输出a--,b,c,因为--在后表示先使用后自减,因而输出1 2 0.

没声明过X,Y.哪来的X,Y啊?

a<b<c是用a<b的结果(bool值,1或0)再与c比较
1<2<2真 t=1;a=2;b=1;c=1
2<1<1真 t=2;a=1;b=2;c=0
1<2<0假,退出while

打印的怎么是x,y,程序里没有定义呀

这题应这么理解 第一次循环时 a<b 为真即(a<b)真值整体为1 1<c 成立 执行后a=2 b=1 c=1 t=1 第二次循环时 a<b 为假即(a<b)整体为0 0<c 成立 执行后 a=1 b=2 c=0 t=2 第三次时 a<b 为真即(a<b)整体为1 1<c 为假即整体为0 到此循环结束 即a=1 b=2 c=0