我是C ++的新手,我正在解决一些简单的练习。当我遇到一个我无法解释的行为时,我正在解决一个问题。
我的函数将2个数组作为参数,我必须返回这些数组中所有元素的总和。我的代码:
#include <vector>
using namespace std;
int arrayPlusArray(vector<int> a, vector<int> b){
int c=0;
for (auto k : a){
c += k;}
for (auto k : b){
c += k;}
return c;
}
这样做有效,但只要我写int c;
而不是int c=0;
,它就不再正常工作了。我认为当我写int c;
时,它会将c
的值设置为0
。怎么了?
答案 0 :(得分:4)
撰写int c;
会不初始化c
(除非c
处于全局范围或具有static
存储空间。初始化会花费CPU时钟周期,因此C ++允许程序员以牺牲潜在的程序不稳定性为代价来放弃这种不必要的CPU开销。
事实上,读取未初始化变量的行为未定义(除非它是char
,signed char
或{C}中的unsigned char
)。 从不这样做。