问答详情
源自:4-10 循环结构之三种循环比较

sum+=i*flag;这个语句放在i++;前和后为什么会有相同的答案?


#include <stdio.h>

int main()

{

    /* 小伙伴们:

           选择你们认为最合理的循环结构完成功能吧 */

    int sum = 0;  //定义计算结果变量sum

    int i = 1;    //定义循环数字变量i

    int flag=1;//定义符号状态变量flag

    

    //使用while循环

    while(i<=100)

    {    

        sum+=i*flag;

        i++;

        flag*=-1;

      

    }

     printf("sum=%d",sum);

}


sum += i*flag; 这个语句放在i++;前我能理解。

因为第一步先执行sum的赋值为1,。

但如果sum += i*flag; 这个语句放在i++;后,我就不能理解了。

因为i++;后不是会变成2吗? ++在后的计算不是以;为结束吗?

所以我认为放在i++;后的话,

第一个sum 的赋值为:

sum=2*1=2。

菜鸟求解!


提问者:一个想自我增值的男孩子 2015-09-12 08:59

个回答

  • 诗木丶
    2015-09-29 22:07:24

        while(i<=100)

        {    

            sum+=i*flag;

            i++ ; 

            flag*=-1;

        }

    printf("sum=%d\n",sum); 

      这个我认为才是正确的答案。结果肯定是sum=0+1-2...-100;

        while(i<=100)

        {    

               i++ ; 

            sum+=i*flag;

            flag*=-1;

        }

    printf("sum=%d\n",sum); 

    这是题目给的标准答案,结果的确没错,但是输出的应该是sum=0+2-3。。。+100-101也是-50 。不知是否分析正确


  • 异步加载
    2015-09-20 19:27:06

    具体参考C语言运算符优先级

  • Y_du
    2015-09-12 09:48:53

    你的思路没错啊,的确是2.有什么问题吗?