for循环判断语句后加输出后,为啥是死循环啊

for循环判断语句后加输出后,为啥是死循环啊

问题描述:

#include
int main()
{
int i;
for(i = 0;i < 5,puts("**");i++);
return 0;
}
为啥是个死循环啊,不停打印**

C语言中puts函数调用成功返回值为**非负值**,这样你在for循环里面写条件的时候,虽然逗号前在五次之后会失败,但是逗号后puts返回值一直为TRUE,这样循环就会一直下去了

for语句中条件没同时满足,就不会退出,
for(i = 0;i < 5;i++)
,puts("**");

    这样不就完事了

是不是i<5,puts("**")这个逗号表达式的值就是puts("**")为真,所有才是个死循环啊

C语言逗号表达式的值是逗号表达式最后一部分求值后的结果,你的for循环中i<5,puts("**"),puts("**")的返回值为真,整句逗号表达式的值为真,当然死循环了。貌似你掉到了C语言的一个小陷阱XD

for(i = 0;i < 5;i++)
{
puts("**");
}
这个建议也很好,很规范。
建议以后在()函数框内不要同时使用判断和输出语句,可以在下面用{ }来表示你想达到的结果,写这些东西忌复杂,越简单明了越好,方便以后修改。
我也刚开始学,还在这里面混分来着。。。

我也刚开始学,还在这里面混分来着。。。

楼上也才开始学吗 我也是啊》。。。。