C语言:为什么下面的程序段是死循环?手机党,原谅我没有排版

2025-03-31 22:21:10
推荐回答(6个)
回答1:

注意while里面的表达式:1<=x<=2,并不是判断x在区间[1,2]内,而是:首先计算1<=x的值,结果是真或者假,就是1或者0。然后判断这个值与2的大小关系,显然不论是1还是0,都小于等于2,所以永远是真的。从而使死循环。

回答2:

改成while(1<=x&&x<=2)才对,表达式1<=x<=2先算1<=x,不管x为什么值,1<=x要么成立,要么不成立,即它的结果只有1和0两种,接下来算1<=2(或者0<=2),其值仍然为真,因此它是一个永真循环,会无限循环下去。。。

回答3:

smart0193正解
do{
...
}while((x>=1)&&(x<=2));
这样就对了,别和数学上的比较弄混了

回答4:

while(1<=x<=2)改为while(x>=1 &&x<=2)

回答5:

x=3;
do
{
y=x--;
if(!y)
{
printf("x");continue;
}
printf("#");
}while(1<=x<=2);// 如果是while(1<=x and x<=2)就是你的答案了,忘记C是用&& 表示还是and 表示了

回答6:

while(1<=x<=2)这个是死循环

这样的表达式为逻辑判断,一步步的做出返回
先(1<=x)返回0或1
然后再判断(1<=x)<=2,返回0或1

所以返回值永远是1,所以是死循环