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

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。

菜鸟求解!


正在回答

4 回答

    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 。不知是否分析正确


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

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

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

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

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

一个想自我增值的男孩子 提问者

如果没错的话,不知道为什么运行的答案是一样的。是不是因为虽然计算方法不对,但答案是一样这个情况。
2015-09-12 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

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