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

在c++; 我是C++新手,我正在解决一些简单的练习题。我在解决一个问题时遇到了一个我无法解释的行为,c++,object,int,declaration,C++,Object,Int,Declaration,我的函数以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

我的函数以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;
}
#包括
使用名称空间std;
int arrayPlusArray(向量a,向量b){
int c=0;
用于(自动k:a){
c+=k;}
用于(自动k:b){
c+=k;}
返回c;
}

这是可行的,但只要我写
intc而不是
int c=0它不再正常工作。我想当我写
intc
它将
c
的值设置为
0
。怎么了?

intc不初始化
c
(除非
c
在全局范围内或具有
静态
存储)。初始化成本CPU时钟周期,所以C++允许程序员放弃这样不必要的CPU开销,而可能的程序不稳定。

实际上,读取未初始化变量的行为是未定义的(除非是<代码> char <代码>,C++中的<代码>符号char < />代码>或<代码>未签名char <代码>。strong>永远不要这样做。

intc不初始化
c
(除非
c
在全局范围内或具有
静态
存储)。初始化成本CPU时钟周期,所以C++允许程序员放弃这样不必要的CPU开销,而可能的程序不稳定。

实际上,读取未初始化变量的行为是未定义的(除非是<代码> char <代码>,C++中的<代码>符号char < />代码>或<代码>未签名char <代码>。strong>永远不要这样做。

也许你应该由此得出结论,你认为错了?你需要初始化变量来使用。静态变量和全局变量是为你初始化的,因为默认初始化没有运行时开销,使用自动存储的变量情况并非如此。也许您应该由此得出结论,您认为错误?您需要初始化变量以使用。静态和全局变量为您初始化,因为默认初始化没有运行时开销,使用自动存储的变量情况并非如此。