c语言程序问题(为何退不出for循环?)

#include"stdio.h“main(){inti;for(i=0,printf("first=%d",i);\i<10,printf("second=%d",i)... #include "stdio.h“
main()
{
int i;
for(i=0,printf("first=%d",i);\
i<10,printf("second=%d",i);\
i++,printf("third=%d",i))
{
printf("fourth=%d",i);
;
}
system("pause") ;

}
程序拼命打印 i值,即使i超过了10 也照常打印,没有跳出for循环.求大神解释!
展开
 我来答
zjfaok
2013-03-15 · TA获得超过6807个赞
知道大有可为答主
回答量:4146
采纳率:62%
帮助的人:1637万
展开全部
for循环的判断条件是i<10,printf("second=%d",i),而由于逗号运算符返回的是其右边的变量,因此整个表达式的值是printf("second=%d",i)的返回值,除非打印失败,否则printf返回的都应该是非0值,导致for循环的判断总是为真……
更多追问追答
追问
是不是 指 i<10,printf("second=%d",i);这个表达式里面 主要是因为 i<10, ←这里这个逗号导致语句返回的是这个逗号右边的printf("second=%d",i)的值  所以导致for循环判断条件永久成立.除非打印失败!
追答
xu_weii
2013-03-15 · 超过24用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:56.1万
展开全部
逗号表达式返回最后一个表达式的值,即printf("second=%d",i)的返回值,而printf()返回打印的字符数,由于返回的是非0值,所以你的循环条件始终成立。
追问
那么这个i<10 在这里也没有意义咯?
追答
是没用的
如果需要兼顾,可以改为i<10&&printf("second=%d",i);
这样逻辑上通了,不过代码风格值得斟酌。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式