c++ - 在 C++ 中声明 int 对象

标签 c++ object int declaration

我是 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/

相关文章:

javascript - 原型(prototype)和非原型(prototype)方法?

java - 动态二维数组可以实现 Java.Collection.size() 方法吗?

java - 设置 int 值会导致性能问题

java - 如何将 int 数组转换为十六进制字符串

c++ - C++中的Pthread取消

javascript - 我在返回数组的每个值时遇到问题

c++ - delete-keyword 在这个 for-each 循环中是如何工作的?

javascript - 从包含数组属性的基础对象有选择地创建一个新的对象数组

c++ - OpenGL3 SFML 2.0rc FPS 风格的相机 - 鼠标移动不稳定

c++ - 如何在函数中使用计数器