我是 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
。怎么了?
最佳答案
编写 int c;
不会初始化 c
(除非 c
在全局范围内或具有 static
存储)。初始化需要 CPU 时钟周期,因此 C++ 允许程序员以潜在的程序不稳定为代价放弃这种不必要的 CPU 支出。
事实上,读取未初始化变量的行为是未定义(除非它是一个char
,一个signed char
或 C++ 中的 unsigned char
)。 永远不要这样做。
关于c++ - 在 C++ 中声明 int 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48222200/