1-100和运算中未对sum赋值

刚刚学习c语言,用的dev C++。在打1-100所有的数之和时忘记给 sum 赋值,但是语法上却没有出错,也没有给出垃圾值,但是结果为5051,多出了一个1。用 dev C++试了一个不复制,直接输出的语句。结果答案是0.和书上说的会给出垃圾值不一样。请帮忙解答!
*
 int i, sum ;
 for(i = 1; i <= 100; ++i)
    {sum = sum + i;
   }
 printf("1到100的所有数之和为%d\n",sum);
 

在dev 上的运行结果

1到100的所有数之和为5051

总结:为啥sum的结果为5051

你觉得5051不是垃圾值吗
垃圾值之所以垃圾,就是因为没用啊
如果你不给变量赋初值,那么c语言会随便给它分配一个内存,并且不初始化
那么它到底是个什么值是不确定的,有可能开机之后就没有使用过,那就是0
也有可能是其它程序使用过的,残留了一堆不知道干什么的数据
如果一个算术结果不确定,那它就是个垃圾值,因为你没法拿来做任何用处

垃圾值之所以垃圾,就是因为不一定是什么值
所以不一样很正常,垃圾值是随机数

如果你想输出正确的值,就要将sum初始化为0

sum你没有初始化为0啊

int i, sum=0 ; sum要初始化

int i, sum=0 ;
for(i = 1; i <= 100; i++)
{sum = sum + i;
}
printf("1到100的所有数之和为%d\n",sum);