C++ 为什么要使用++;“价值”;导致-84215049?

C++ 为什么要使用++;“价值”;导致-84215049?,c++,C++,在.h文件中使用此选项: int value; 这在.cpp文件中作为循环: std::cout << ++value << endl; (……等等) 但是为什么呢?这个数字完全没有意义。值从未初始化过,因此您试图将1添加到“不存在”的内容中,以便从刚刚分配到那里的内容中自动获取这些垃圾值。尝试: value = 1; std::cout << ++value << std::endl; value=1; 标准::cout 这是默认初始化的语

.h
文件中使用此选项:

int value;
这在
.cpp
文件中作为循环:

std::cout << ++value << endl;
(……等等)


但是为什么呢?这个数字完全没有意义。

值从未初始化过,因此您试图将1添加到“不存在”的内容中,以便从刚刚分配到那里的内容中自动获取这些垃圾值。尝试:

value = 1;
std::cout << ++value << std::endl;
value=1;
标准::cout
这是默认初始化的语法。默认初始化的整数有一个不确定的值(除非它有静态存储,在这种情况下初始化为零)。读取不确定值的行为是未定义的

但是为什么呢?这个数字毫无意义


大概是因为程序的行为未定义。

您是否用任何数字初始化了
?如果没有,那么
-84215049
就完全有意义了(就像任何其他数字都有意义一样)。在一个你无法预料的数字被递增后,你希望得到什么数字?你需要提供一个数字来向我们展示。这个
值定义在哪里(全局范围、成员变量、函数内部的局部变量等)?如果有,它是如何初始化的?另外,请花一些时间阅读,以及。正如您所看到的,所有这些数字都包含
42
,因此该程序与Magrathea的原始设计非常协调。虽然我同意大家所说的,
数字
没有初始化,但没有足够的上下文来确定原因。如果你的布局和你所说的一样,那么有一些我们看不到的秘密头,仅仅是
int number
在其中,并且所述标头包含在我们看不到的某个机密
.cpp
中,并且您显示的代码行在所述相同的代码行中的某个位置,
number
没有被某个未初始化的局部变量遮挡,那么您的声明将发生什么。。不能<代码>编号
是一个全局静态存储;它在启动时初始化为零。所以发布一个真实的。
value = 1;
std::cout << ++value << std::endl;
int value;