在 C++ 中声明 int 对象

Declaring int object in c++

我是 C++ 的新手,我正在解决一些简单的练习。当我遇到一个我无法解释的行为时,我正在解决一个问题。

我的函数接受 2 个数组作为参数,我必须 return 这些数组中所有元素的总和。我的代码:

#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。怎么回事?

写入 int c; 不会 初始化 c(除非 c 在全局范围内或具有 static 存储)。初始化花费 CPU 个时钟周期,因此 C++ 允许程序员以潜在的程序不稳定为代价放弃这种不必要的 CPU 支出。

事实上,读取一个未初始化变量的行为是未定义(除非它是一个char,一个signed char 或 C++ 中的 unsigned char)。 从不这样做。