2017年中国畜牧业展会:指点一下c程序

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 11:21:19
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之间,你的值远大于此,故而产生溢出,即得到的值为负数!!!