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

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

#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 回答

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了。不知道我这样说是否明白。

1 回复 有任何疑惑可以回复我~
#1

慕雪4536758 提问者

非常谢谢
2020-02-27 回复 有任何疑惑可以回复我~
#2

weixin_慕斯3464934

我不明白。。。
2020-03-07 回复 有任何疑惑可以回复我~

我不明白。。。求指教。

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

同学你得先理解i++

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

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

举报

0/150
提交
取消

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

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