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 是
恒成立的。这是死循环。