厦门燃气公司上门服务:指点一下c程序

来源:百度文库 编辑:高考问答 时间:2024/05/09 19:23:38
main()
{ unsigned long int a,n,sum;
sum=1;
printf("get in:");
scanf("%d",&n);
for(a=1;a<=n;a++)
sum=a+sum;
printf("sum is:%d", sum );
}输入999时为何得负值????

我可以很负责任的告诉你
你的程序没错
499501
(以上用的是是VC6.0)

如果是TC,应该做如下修改(大于65535,溢出,因为输出格式为整型,应该改为长整型)
printf("sum is:%ld", sum );

剧我的理解:
你应该是输入的n值太大,导致得到的SUM发生溢出。因为你的程序是一个求1+2+3+…+999的求和程序,根据高斯的算法可以很快算出它的值为500000!而long int的取值范围是-65536~65535之间,你的值远大于此,故而产生溢出,即得到的值为负数!!!