残念终成殇 2021-12-08 20:16 采纳率: 66.7%
浏览 46
已结题

在求for循环时遇到问题,求解!

有以下程序
main()
{ int s,i;
for(s=0,i=1;i<3;i++,s+=i);
printf(“%d\n",s);
}
s、i的初值分别为0和1,判断循环条件,表达式“1<3”成立,执行“i++,s+=i”后,i和s的值分别为2和1,继续判断循环条件,表达式“2<3”成立,执行“i++,s+=j”后,i和s的值分别为3和3,再次判断循环条件,表达式“3<3”不成立,循环结束。
问题来了,输出结果为什么是5?

  • 写回答

1条回答 默认 最新

  • CSDN专家-link 2021-12-08 20:21
    关注

    你的理解有点错误。i++,s+=i是循环结束再执行。所以循环第一遍执行完后,才执行表达式i++,s+=i,这个表达式先执行i++,执行完后i=2,然后s+=i,这样s就是2。第二次循环同样执行完后才执行表达式i++,s+=i,执行完后i=3,s+=3,s=2+3=5

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 12月16日
  • 已采纳回答 12月8日
  • 创建了问题 12月8日