c 语言一个简单的题目。。 求助

c 语言一个简单的题目。。 求助
#include]
main()
{ int sum=0,a=1;
while(a<100)
{sum=sum+a;
a++;
}
printf("%d",sum);
}

问题是 为什么 {sum=sum+a;
a++;
}
换成{a++;
sum=sum+a;
}
运算结果为什么不一样。。。?
{sum=sum+a;
a++; 结果 是4950
{a++;
sum=sum+a; 结果是5049 不管是从a=1累加 还是从a=2累加 都是加到100 为什么结果差了99。。。
第一种情况:
while(a<100)
{sum=sum+a;//这可以写成sum+=a;呵呵
a++;
}
这时,a=1,sum=0;第一次执行循环,sum+=a;结果sum=1,a=1,执行下一句,a++;结果a=2,之后进入下一次循环……一直到99时,先执行sum+=a;再执行a++;这时,a=100,已经不满足条件了,退出循环。
第二种情况:
while(a<100)
{a++;
sum=sum+a;//这建议换成sum+=a;看似没什么区别,实际是编程思想的变化
}//循环开始,a=1,执行a++,a=2,再执行sum+=a;sum=2,之后进入下个循环。**这里和上一种的第一次循侍世闹环结果差了1,即第一次循环结果比上老罩一种sum结果多1***继续下面的循环,直到99,进行循环时,先执行a++,即a=100,第二种从2开始加到100,第一种从1开始加返氏到99。

//所以最后结果差了99

//祝你好运
这两个结果的确是不一样。
记住C语言中表达式按照顺序执行的孝笑,也就是执颂岩行完第一条语句、后才会执行第二条语句,依次类推。
上面两种案例是不一样的
第一种:注意这和你写的有所不一样。
sum=0,a=1
sum = sum+a; 这条执行完后,a=1(巧樱含没有变),新的sum=1(sum = 0 + 1)
a++; 而这条执行后,a=2,

最终结果,a=2,sum=1

第二种
sum=0,a=1
a++; a=2
sum=sum+a; sum=2
最终结果,a=2,sum=2。

而你的表达式语句是放在循环体内的,其含义和上面提到这两个情况性质是一样的。
第一个没岁a是从1开始的,先执行sum=sum+a,当a=99时枯没睁,然后a++,这时a=100,跳出循环,所以第一个程序是从1加到99;而第二个程序a++在前,所以是从2开始的,当a=99时,执行a++这时a=100,然后执行sum=sum+a,所以第二个程序比第一个程序少加了一个1,但多加了一个100,察世最后就是多加了99,明白了吧。
a++是a自加1,把他放前面后面肯定不一样啊。
a++放在羡蚂上面是从a=2开始累加,a++放下面腊派粗就是从a=1开始累加了,结果肯定不一轮镇样。
sum=sum+a;
a++;

求滚轮和之后,再自增
结果相搭睁当于1+2+3+...99

a++;
sum=sum+a;

自增之后,再求和
结果相当于2+3+4+...100

结果知备岁自然不一样
← 上一篇: 下一篇: →