以下是一道c语言关于循环的题,请问如何解答?给出解题过程,

来源:百度知道 编辑:UC知道 时间:2024/07/05 02:22:05
#include<stdio.h>
main()
{
int x=3,y;
do
{y=x--;
if(!y){ printf("x");continue;}
printf("#");
}while(1<=x<=2);
}
能不能解释一下为什么会出现死循环,我考试就考这种,我想知道原因,能分析一下过程吗?
我把(1<=x<=2)换成 (x>=1&&x<=2)果然出现我想要的结果了,可是当写成(1<=x<=2)时,为什么会出现死循环呢?麻烦再帮我解释一下!
能解释一下死循环形成的原因吗?

我把你的程序复制到vc中 得到的结果是:无数个#
<=的结合性是从左向右的,1<=x<=2相当于(1<=x)<=2,其中1<=x为真,此表达式的值为1,之后计算的是1<=2,此表达式的值也是1,这样while的循环条件始终为真,所以死循环了
编程里面的式子与数学里面的不一样,不能照搬,例如i=3,在c语言里面是复制,i==3才是判断相等

###x####……
后面无限循环
问题在while(1<=x<=2);
只要小于2他就一直执行

while(1<=x<=2); 相当于WHILE(X<=2)

滑稽的语言学习题目,程序语言规范的目的是为了让别人读懂
这种为了考倒人的题目,印象中只有C语言课后习题里有,而且你这个程序运行的时候是无限打印#
写成x>=1&&x<=2

while(1<=x<=2);
C语言中没这个写发
如果是要求1<=x<=2
在C语言中应该写成while(1<=x&&x<=2);
以前我也这样错过哈~~~

出现死循环!

死循环