c语言程序求解!

来源:百度知道 编辑:UC知道 时间:2024/05/22 05:00:13
#include<stdio.h>
void main()
{
int a=1,b=2,c=2,t;
while(a<b<c)
{
t=a;
a=b;
b=t;
c--;
}
printf("%d,%d,%d\n",a,b,c);
}
分析输出结果:t=a;a=b;b=t;c--;什么意思啊

谁能帮我分析下

让我来告诉你吧 a<b<c 如果写成a<b&&b<c 的话这个
循环条件就是不成立的
可惜不是 所以他的意思就是 根据符号悠闲级 从左到右
实际它等于是这样的 (a<b)<c => 1<c
所以循环是成立的
所以循环两次后就得到最后的结果
a=1,b=2,c=0
而t=a;a=b;b=t;c--;它的意思是将a,b 的值交换 其中t相当于容器 起倒换作用

t=a是把a的值赋予给t;a=b是把b的值赋予给a;然后把t的值赋予给b;c在使用后减1。最后输出a,b,c的值应该是2,1,1
似乎是这样的

c不小于b啊,应该不进行while循环吧.....为什么运行的结果是2,1,0呢
好郁闷啊

如果条件是成立的,即a<b<c时,那么a的值就会保存在t下,此时t=1,即原来a的值,a就为空了,然后b的值就会保存在已经没有值的a下,此时a=2,即原来b的值,此时b没有值,然后t=1的值会交换到b下,那么b=1,然后输出a b c,就是交换值后的顺序.

t=a;a=b;b=t;c--;
意思就是先把a(=1)的值给t,然后把b(=2)的值给a,再把t(=1)的值给b,最后c自减.这里会循环两次。
最后得到1,2,0

输出1,2,0
其中a<b<c
先判断a<b得到bool值再与c比较。
首次,1<2 --> true==1 --> true<c
进入循环 做a、b的调换,c--;
此时a=2,b=1,c=1
....
最后结果为a=1,b=2,c=0