哪位大神看看,为什么i++; sum+=flag*i;这两个顺序不一样,结果却一样?难道程序不是按步骤一步步来的吗?

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

慕雪4536758

2020-02-25 15:45

#include <stdio.h>

int main()

{    

    int sum = 0;  

    int i = 1;    

    int flag = 1; 

    while(i<=100)

   {   

   i++;

       sum+=flag*i;      

       flag*=-1;

   }

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

    return 0;    

}


写回答 关注

3回答

  • qq_落叶飘香_03948743
    2020-02-26 22:27:27
    已采纳

    i++在后面的情况是从  1执行执行到100结束,最后一个数字是-100结果是-50。当i++在前面(如你写的代码),这种情况是从2执行,执行到101,最后一个数字是-101结果也是-50。第一种情况的最后一次是执行完了sum+=-100  , i++就是100+1=101,然后再进入循环判断101<=100,然后语句结束,第二种情况是最后一次进入判断的是i=100,while(100<=100) 进入循环体 i++就是 100+1=101,sum+=-101, 这时候才算结束。这样两次的结果就都是-50了。不知道我这样说是否明白。

    weixin...

    我不明白。。。

    2020-03-07 20:29:52

    共 2 条回复 >

  • weixin_慕斯3464934
    2020-03-07 20:28:55

    我不明白。。。求指教。

  • WE_Xing
    2020-02-26 22:37:38

    同学你得先理解i++

    正是因为i++时i首先仍取原值

C语言入门

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

926207 学习 · 20797 问题

查看课程

相似问题