调式的时候,因为有printf 进入不了调试界面,去掉for里面的几个打印,程序正常
为什么下面C语言代码是死循环呀。看了半天没发现问题
答案:5 悬赏:80
解决时间 2021-02-02 22:15
- 提问者网友:情系雨樱花
- 2021-02-02 02:45
最佳答案
- 二级知识专家网友:野心和家
- 2021-02-02 03:12
表达式1,表达式2
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,表达式“3+5,6+8”的值为14。也就是说for循环能否自动结束取决于这个表达式printf(“Second=%d”,i);
而printf函数的返回值是打印出的字符个数,而你的for循环内的判断表达式printf不可能返回0,而是返回8,“Second=%d”一共八个字符,所以程序死循环
逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,表达式“3+5,6+8”的值为14。也就是说for循环能否自动结束取决于这个表达式printf(“Second=%d”,i);
而printf函数的返回值是打印出的字符个数,而你的for循环内的判断表达式printf不可能返回0,而是返回8,“Second=%d”一共八个字符,所以程序死循环
全部回答
- 1楼网友:花一样艳美的陌生人
- 2021-02-02 06:53
确切的说是去除i<10后面的东西和i++后面的东西即可
原因:查询for循环里条件表达式,逗号表达式的用法即可明白
- 2楼网友:末路丶一枝花
- 2021-02-02 05:31
for里面第二个表达式i<10,printf(..);中,由于逗号表达式的缘故,pirntf成了判断表达式,也就是说结束条件要printf为假才结束,printf的返回值时实际输出字符的个数,只要有东西输出,printf永远为真,for就死循环了。
这里可以改成printf(..),i<10
反过来写
- 3楼网友:专属的偏见
- 2021-02-02 04:48
靠, 看错了
- 4楼网友:滚刀废物浮浪人
- 2021-02-02 03:45
这对花括号可以省略掉,if语句不加花括号的话则认为他下面第一条语句属于if语句的主体部分,所以这个花括号可以省略,不知道这是楼主想问的不。。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯