帮我看下这条C程序什么地方有错?

来源:百度知道 编辑:UC知道 时间:2024/05/28 11:05:00
#include<stdio.h>

void main()
{
long int i,a;
a=0;
for(i=1;i<=500;i++)
a=a+i;
printf("%d",a);
}
今天老师要我们输出1+2+3+……+500的结果,我这样写为什么不能正确出答案呢.本人刚学C,程序很简单,有懂的人帮忙找下出错的地方吗?
这程序输出的结果是-5822.为什么会得到负数呢
如果把这个程序换成1+2+3+……+100,也就是说把数字换小就可以正确输出了.
大家帮忙看看.

printf("%ld",a);

循环那好像有点问题,我理解FOR里的循环是到i=500是止,i从1以1为步进递增。那么到最后i的值是501?
一家之言,我也初学,希望有所帮助
出现负数就要考虑变量类型了,看长度够不够?