【问题标题】:Declaring int object in c++在 C++ 中声明 int 对象
【发布时间】:2018-01-12 08:24:55
【问题描述】:

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

【问题讨论】:

  • 也许你应该由此得出你认为错误的结论?
  • 你需要初始化变量才能使用。
  • 为您初始化静态和全局变量,因为默认初始化没有运行时开销,对于具有自动存储的变量也是如此。

标签: c++ object int declaration


【解决方案1】:

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

事实上,读取未初始化变量的行为在 C++ 中是未定义(除非它是 charsigned charunsigned char)。 永远不要这样做。

【讨论】:

    猜你喜欢
    • 2023-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    • 2020-05-30
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多