C语言 for无限循环

#include<stdio.h>
void main()
{int i,k;
for(k=-1;k=1;k++) /*无限循环,因为K=1是赋值语句,那么改成k==1为什么还是没有值?还是我理解错了。*/
printf("*****\n");
}

for 的第二个参数是循环条件
k=1是赋值语句 因为K为INT类型 1符合条件 赋值成功 返回true 所以条件一直为真陷入无限loop
K==1 显然for运行时K的值为-1 不符合条件所以直接跳过for语句
pritf(????) 这句在FOR下面 当for语句没有{} 花括号 则FOR语句把下面最近的一句语句 当做循环体语句
因为for条件不成立所以 不输出追问

那么把K赋值为0呢?for(k=-1;k=0;k++) 这算是一种特殊情况么?

追答

0一样的 int a=0 请问成立吗? 结果当然是成立的 只要赋值 不超过INT 能包含的范围都是返回TRUE的

追问

额。但是。。你看图

追答

这是它的内部机制 0=false 明白了吧

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-04
k=1是赋值语句,对于判断条件来说是值永远都是1,也就是说for(k=-1;k=1;k++) 还是无限循环。
你把改成for(k=-1;k==1;k++)就没问题了。
第2个回答  2011-08-04
for循环第二个分号前放的是循环条件,它的值是一个逻辑型,你不论k=1还是k==1最后看的是这条语句是为0还是为1;
第3个回答  2013-01-31
这个简单
for(i=0;i==2;i=i+0);
这就实现了无限循环
相似回答