C语言:下列()不是无限循环

求解析!
A.for(;;x=0);
B.while(x=1){x=1;}
C.for(y=2,x=1;x>=++y;x++);
D.for(y=0;x=1;++y);

for 的语法为:
for(循环初始化语句(可省略) ; 判断循环终止条件语句(可省略) ; 每轮循环结束运行的语句(可省略))
{
每次循环执行的语句
}

while 的语法:
while(判断循环终止条件语句(不可省略))
{
每次循环执行的语句

}

下面我们来看题目:
A. for(; ; x=0)
这是 for 语句。省略了 “循环初始化语句” 和 "判断循环终止条件语句" ,
每次循环结束后执行语句为: x=0
因为省略了 "判断循环终止条件语句",因此是一个死循环。

B. while(x=1){x=1;}
这是 while 语句,“判断循环终止的语句”为:x=1。语句是一个赋值语句,而不是逻辑条件(x==1)语句。这个赋值语句的值,也就是变量 x 的值,恒等于 1。不为 0 的值,在 C 语言里面都是"真"的,因此这个循环会一直执行下去。

C.for(y=2,x=1;x>=++y;x++);
这是 for 语句。
“循环初始化语句” 为: y=2,x=1

"判断循环终止条件语句"为:x>=++y
”每次循环结束后执行语句“为: x++

我们看 "判断循环终止条件语句"为:x>=++y。
第一次循环的时候,x=1, ++y = y+1 = 3。因此逻辑判断语句 x>=++y 的值是“假”的。
这个循环一次也不会执行。它不是一个死循环。

D.for(y=0;x=1;++y);
这是 for 语句。
“循环初始化语句” 为: y=0
"判断循环终止条件语句"为:x=1
”每次循环结束后执行语句“为: ++y

我们可以看到,不论循环多少次,变量 x 的值都不会改变的,x 恒等于 1。
只有 y 的值每循环一次会加一。
因此 "判断循环终止条件语句"为:x=1 是恒成立的。这是死循环。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-05
a)
for(k=-1;-10<k<0;k--)
这里有个错误,k=-1应该是小写k
不是无限循环,k<-10后-10<k<0不成立,退出
b)
for(i=1,j=10;i-j;i++,j--)
是无限循环,i-j=0时i-j为假才能退出,当i=5时,j=6,而下一循环i=6,j=5,i-j永不为0
c)
for(k=1;k=10;k++)
是无限循环,k=10是赋值表达式,永为真
d)
for(k=1;k>0;k++)
是无限循环,k从1开始递增,所以k>0永为真
第2个回答  2012-11-25
应该选c,一开始就不满足x>=++y这个条件,所以一开始就跳出for循环语句了
第3个回答  2012-11-25
这里含简单就判断出C的条件不满足,所以是C
相似回答