问答详情
源自:4-6 循环结构之while循环

求大佬解释下:++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;
}

提问者:姬野 2019-01-15 19:10

个回答

  • 慕移动9181930
    2022-03-29 09:34:06

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

    ozigukliywbfktfrxelnojwelkfjzhicqcmgbaqmewazfniljaqppjtkwurxllihajdnwvwpledmlwgmlwuotnudmnoepuqapumdfsqmurxyxsdqvhvcuua

  • StellaZ小朋友
    2019-01-15 22:58:18

    ++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那一节