c++问题求教

来源:百度知道 编辑:UC知道 时间:2024/05/21 07:08:34
#include <iostream.h>
void main()
{
int a=1,b=2,c=3,t;
while(a<b<c)
{
t=a;
a=b;
b=c;
c--;
}
cout<<a<<b<<c;
}
为什么这个程序是死循环

这个程序不会死循环,但会有警告……
你看啊,while里面的条件a<b<c,是这样理解的:先是a<b为bool型的true,而后用true<c,也就是用一个布尔型的跟一个整型的比大小,编译会通过,但会有警告。也就是说,形如true<m,只要m不为0,这个式子都为“真”。当然,最后得出的结果会是a=2,b=1,c=0.
因为:循环第一次后:a=2,b=3,c=2;此时while条件中,true<2还是满足的。
循环第二次后:a=3,b=2,c=1;此时while条件中,true<1还是满足的。
循环第三次后:a=2,b=1,c=0;此时while条件中,true<0为假,即,跳出循环体,
即:结果是2,1,0

希望我的回答对你有所帮助……
谢谢

a<b<c改为a<b&&b<c

我只学过二级C语言,帮不了你…