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

求大佬解释下:++i,i++,i=i+1; 这个含义,为什么结果变成了1717了。谢谢!

#include <stdio.h>
int main()
{
    int i,sum=0;
    i=1;
    while(   i<=100  )  //循环条件应该是什么呢?
    {
        sum=sum+i;
         ++i,i++,i=i+1;         //这里是不是应该改变循环变量的值
    }
    printf("100以内所有整数之和为:%d\n", sum);
    return 0;
}

正在回答

2 回答

老师,你的github账号可以公开吗?希望能有看到你的demo的源码。

ozigukliywbfktfrxelnojwelkfjzhicqcmgbaqmewazfniljaqppjtkwurxllihajdnwvwpledmlwgmlwuotnudmnoepuqapumdfsqmurxyxsdqvhvcuua

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

++i指的是先完成“加一的运算”,再“赋值”;

i++指的是先“赋值”,再完成“加一的运算”;

i=i+1就是直接赋值,与“i++”没有太大区别。

在这道题里,“++i”与“i++”与“i=i+1”其实是同样的运算。

sum每次赋值完后,i每次就增加1就是正确的。

但是你的答案,用了“ ++i,i++,i=i+1; ”,也就是连续加了3个1,答案肯定错啦。

给你示范一下你的答案循环过程:

1⃣️i=1时:sum=0+i;i=i+1+1+1;

2⃣️i=3时:sum=1+i;i=i+1+1+1;

3⃣️i=6时:sum=4+i;i=i+1+1+1;

4⃣️i=9时:sum=10+i;i=i+1+1+1;

……(这样的结果漏掉了很多数,结果肯定不会是5050了)

可以复习一下3-3那一节


3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求大佬解释下:++i,i++,i=i+1; 这个含义,为什么结果变成了1717了。谢谢!

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