为什么使用sum时要初始化为0,一篇文章教你搞懂

📅 2026/7/8 2:46:00 👁️ 阅读次数 📝 编程学习
为什么使用sum时要初始化为0,一篇文章教你搞懂

1.sum在c语言中的作用

  1. 英文含义
    sum 英文单词本身就是“总和、合计”的意思,程序员习惯用它命名存放累加结果的变量。

  2. 核心作用
    sum 是一个累加容器(累加器),专门用来不断收纳多个数值相加之后的合计结果。
    每次执行 sum = sum + 新数值 (简写 sum += 新数值 ),就是把新的数字加到已经存好的总和上,再存回 sum。

  3. 初始化规则:必须初始化为 0
    在开始累加之前,一定要写 int sum = 0; 。
    2.为啥要初始化为0?
    1.C语言中,局部变量如果不手动赋值,里面是随机垃圾值;
    2.如果不写 sum = 0 ,sum一开始是乱码数字,后续累加结果全部出错。
    3.就像拿空盒子装东西:
    sum = 0 相当于先把盒子清空;
    如果不清空,盒子里原本有乱七八糟的东西,再往里放1、2、6……最后总数肯定不对。
    图片:下图以没有初使化为例,程序无法运行

    图片:下图则是成功例子

    3.是不是只有sum要初始化为0,而其他变量不用?
    这其实是许多新手的误区,不是别的变量不用初始化,而是它们的使用时机不一样;sum必须初始化为0,是因为它在计算语句里会读取自身旧值。

sum 变量在程序中会执行类似sum = sum + x;这样的累加语句。

1.这条代码执行时,计算机要先读取等号右边旧的sum值。如果 int sum; 没赋值,旧sum是内存里的随机垃圾值,计算直接出错。所以累加器sum,在第一次使用前必须手动给初始值0。

2.其他变量分两种情况

情况A:变量定义之后,立刻给它赋新值,没有先读取它本身,就可以不初始化(语法允许) 例子:
int a;
a = 10; // 直接给a写入10,全程没有读取a原来的值

情况B:只要变量在被赋值之前,要读取自身的值参与计算,就必须初始化,和是不是sum无关。比如累乘变量:
int ret;
ret = ret * 3; // 错误!这里要读取ret原来的值,ret是垃圾值

  1. 通俗总结

    1. sum的代码逻辑:先读自己 → 参与计算 → 再写入新值,所以必须提前初始化;

    2. 有些变量:先写入新值 → 之后才读取使用,中间不会读到垃圾值,看起来“不用初始化”;

    3. 通用铁律(所有变量通用,不分名字):

如果变量在第一次赋值前,需要读取它本身的值做运算,就一定要初始化;
如果变量定义后,第一步就是给它赋值,没有读取旧值,就可以不提前初始化。

通过这篇文章希望大家了解到sum初始化的原因,由此进而延申其他变量也需初始化,不过需要分情况而定。