初始化问题
最近两天学习的过程中,图中的错误犯了几次 没能理解到底为什么 背后机制怎样的如内存中地址如何赋值映射的写了一个简单的例子,定义数组,数组元素循环求和
求助问题如下:
SUM如果只定义不初始化(整形变量),循环累加就会错误输出,SUM赋予常量之后就正常运行,没有搞懂背后机制,求指点 因为这条语句
sum += a;
等价于
sum = sum + a;
如果不将sum初始化为0,
那么第一次执行的时候sum中存放的是一个随机数,所以和a相加结果也是随机的 定义变量就是申请一段内存空间,这段内存空间里面肯定是有值的,如果申请以后你不给赋值覆盖,他就保留是上次被修改后的值。。
一个房子,别人住过,留下了一把XX,现在你申请到了这套房子,如果你不重新放凳子进去,那么这个房子里面可能是上次别人放的任意XX。。 在你的变量没有进行初始化的时候,里面存了一个垃圾值, 谁也不能确定这个值是什么, 可能是被另外的程序使用过的一块区域留下来的数据。
但是,VS的编译器。对这个东西进行了优化~ 对没有赋初值的变量~他们会给他们一个值 我记得好像是0XCC 这东西涉及到汇编~ 你有兴趣的话可以去了解一下~ 也就简答的理解为,定义以后 内存地址申请了空间 但是没有初始化申请的内存地址可能保留上次的数据或者垃圾 VC编译给优化了成了随机数。
页:
[1]