gpt4 book ai didi

c++ - 为什么 C++ 中未初始化(然后使用)的 int 不返回错误?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:52:32 25 4
gpt4 key购买 nike

我是 C++ 的新手(刚开始)。我来自 Java 背景,我正在尝试使用以下代码对 1 到 10(含)之间的数字求和,然后打印出总和:

/* 
* File: main.cpp
* Author: omarestrella
*
* Created on June 7, 2010, 8:02 PM
*/

#include <cstdlib>
#include <iostream>

using namespace std;

int main() {
int sum;

for(int x = 1; x <= 10; x++) {
sum += x;
}

cout << "The sum is: " << sum << endl;

return 0;
}

当我运行它时,它一直打印 32822 作为总和。我知道答案应该是 55,并意识到它打印的是短 (32767) 加 55 的最大值。更改

int sum;

int sum = 0;

会工作(因为它应该,因为变量需要初始化!)。但是,为什么会发生这种行为?为什么编译器不警告你这样的事情?我知道当某些东西没有初始化时,Java 会冲你尖叫。

谢谢。

编辑:我正在使用 g++。这是 g++ --version 的输出:我在 Mac OS X 上使用 g++。

nom24837c:~ omarestrella$ g++ --version
i686-apple-darwin10-g++-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)

最佳答案

读取未初始化的变量会导致未定义的行为,并且不需要编译器来诊断错误。

请注意,如果您尝试读取未初始化的变量,大多数现代编译器都会警告您。使用 gcc,您可以使用 -Wuninitialized 标志来启用该警告;即使在警告级别 1,Visual C++ 也会发出警告。

关于c++ - 为什么 C++ 中未初始化(然后使用)的 int 不返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2994145/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com