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

来源:4-10 循环结构之三种循环比较

一个想自我增值的男孩子

2015-09-12 08:59


#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。

菜鸟求解!


写回答 关注

3回答

  • 诗木丶
    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.有什么问题吗?

    一个想自我增...

    如果没错的话,不知道为什么运行的答案是一样的。是不是因为虽然计算方法不对,但答案是一样这个情况。

    2015-09-12 18:20:17

    共 1 条回复 >

C语言入门

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

926022 学习 · 20793 问题

查看课程

相似问题