为了账号安全,请及时绑定邮箱和手机立即绑定

请教一下,

#include <stdio.h>
int main()
{
 int sum, num;
 for (sum = 0, num = 0; num <= 3 && sum <= 5 && 1; num++, sum++)
 {
  sum += num;
  printf("num=%d,sum=%d\n", num, sum);
 }
 
 return 0;
}


这个代码运行结果:num=0,sum=0

                               num=1,sum=2

                               num=2,sum=5

我的理解是num循环到1就结束了,为什么循环到2才结束?

正在回答

2 回答

C语言中只要不是1就会认为是真。

0 回复 有任何疑惑可以回复我~
#1

苏蘚苼 提问者

我以为那个1是数字1,原来是布尔值0或1那个1啊
2015-09-17 回复 有任何疑惑可以回复我~
#2

onemoo

不是0才会被认为是true
2015-09-17 回复 有任何疑惑可以回复我~
#3

onemoo 回复 苏蘚苼 提问者

就是数字1,这是整型字面量。
2015-09-17 回复 有任何疑惑可以回复我~

for中的判断部分是 num = 0; num <= 3 && sum <= 5 && 1,意思是 num <= 3sum <= 5 都成立才行。最后的那个1是个整型字面量,在逻辑表达式中所有非0整型值都为true,所以最后这个逻辑与对判断没有影响(要是这里为0,那整个判断部分就为false,循环就不会执行了)。

可以看到循环3次时都满足要求。但在第4次循环开始前,num是3,sum是6,sum不满足循环条件了,所以不会有第4次循环。

0 回复 有任何疑惑可以回复我~
#1

苏蘚苼 提问者

谢谢,懂了
2015-09-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926207    人
  • 解答问题       20797    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

请教一下,

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信