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

i++放在运算首位的问题

这里有个疑问,i++放在前面,在进行计算sum,因为前面不是已经定义过i=1,那么第一步计算不就成了sum=sum-2了?而且无论i++放在首位还是末位都是一样的-50,我的理解是i++放在首位不是应该少+一个1了吗,求解,困惑中

正在回答

4 回答

题目是计算1-2+3-4+...-100的值,

对比三个答案,while和do-while是先自加,再求和;而 for循环是先求和,再自加,明显计算是有区别的。

while和do-while循环把i++放在前面,实际运算的是2-3+4-5+...-101,值虽然也为-50,却不对。

for循环运算的是1-2+3-4+...-100,值为-50,正确。


以while循环为例,查看每次i自加及sum求和的值。

#include <stdio.h>
int main()
{
     int sum = 0;  
    int i = 1;    
    int flag = 1;
    while(i<=100)
    {
        i++;
        sum+=i*flag;
        printf("%d* %d= %d\n",i,flag,sum);      //查看每次i自加及sum求和的值
        flag*=-1;
    }
    printf("%d\n",sum);
    return 0;
}



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

确实是少加一个 1 ,用for的话参考代码是正确的 ,个人认为 前面用do和do...while是有误的

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

i++是先输出再加1,所以应该是先输出1,但是此时电脑里面记下来的应该是2;所以第一次是1,没有错的。第二次电脑输出2,但是记录下来的是3。。。

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

hello_瓜牛 提问者

这样写不就是2-3+4-5...-101的吗
2016-11-07 回复 有任何疑惑可以回复我~

我觉得题目有问题,首先i++放在第一位,此时i值不是应该是2,第一次运算就直接成了sum=2,而不是1了,如果i++放在末位,应该就对了吧,而且放在首位是从2计算到101啊,直接编一个全+到5的,按照i++放在首位得到20,放在末位就得到15,所以我觉得网友那些给的i++放在首位的答案是错的,有点偷换概念的感觉,虽然答案都是-50.

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

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

进入课程

i++放在运算首位的问题

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