#include<stdio.h> main() {int n,sum=0; scanf("%d",&n); while(n>=3) sum+=n--; printf("sum=%d\n",sum)

我想知道为什么sum+=n--,n后面的--虽然是自减1我知道,但是这里好像不对啊,在n=3的时候不就sum等于2了吗?哪位高手能够解答一下,谢谢。

第1个回答  2010-12-11
你好,我来回答吧!
#include<stdio.h>
main()
{
int n,sum=0;
scanf("%d",&n);
while(n>=3)
sum+=n--;
printf("sum=%d\n",sum);
}
首先分析你的代码,这是一个很基础的c代码,首先输入n,你输入的是3,那么n=3;
开始进入循环,n>=3满足条件,进入循环体,进入关键句了,sum+=n--;
这一句解释为同义两句:sum+=n;n--; n--在你写的句子里面的是表达式,不是语句,作为表达式
看"--"的位置,如果是在变量前面,那么就先用在减(sum=sum+n,n等于3)如果是语句的话,就都是减,那就没有关系,同样"++"也是一样!
语句与表达式的区别!
语句是最后用分号,表达式是配合另一个表达式使用的,再用一个分号:
printf("%d",i++);
printf("%d",++i);
i++;
前两个printf里面的i++,++i是表达式
后面的i++是语句,自己好好理解下!
谢谢!
第2个回答  2010-12-11
写这些也不容易,都是爱学习的人,希望能追加点分
正确的计算顺序是:
sum=sum+n;
n--;
输入4;
第一次循环:
n=4>=3;
sum=4;
n--;(n=3);
第二次循环:
n=3>=3;
sum=4+3=7;
n--;(n=2;)
返回7

给你改了一下,看看就会懂了:
#include<stdio.h>
void main()
{
int n,sum=0;
scanf("%d",&n);
while(n>=3)
{ sum+=n--;
printf("sum=%d\n",sum);
printf("n=%d\n",n);
}
}本回答被提问者采纳
第3个回答  2010-12-11
n--是在这句话执行结束后n才减一。
sum+=n--;
分解为:
sum = sum + n;
n=n-1;
--n是在n出现后就立即减一
sum+=--n;
分解为:
n = n - 1;
sum = sum + n;本回答被网友采纳