【问题标题】:C++ declaring multiple integers prints different valuesC++ 声明多个整数打印不同的值
【发布时间】:2017-07-30 14:32:23
【问题描述】:

我正在尝试学习 c++,但遇到了一个非常烦人的不一致:

#include <iostream>
using namespace std;

int main (){
    int var1,var2,var3,var4,var5,var6,var7;

    cout << var1 << endl;
    cout << var2 << endl;
    cout << var3 << endl;
    cout << var4 << endl;
    cout << var5 << endl;
    cout << var6 << endl;
    cout << var7 << endl;

    return 0;
}

它返回以下内容:

0
4196128
0
570985680
32767
0
0

为什么这些未设置的值会得到不同的值?我不应该为每个变量得到 0 吗?我得到的输出代表什么?

【问题讨论】:

  • 你没有初始化它们,所以它们有随机值。
  • “我得到的输出代表什么?”,未定义的行为。

标签: c++ undefined-behavior variable-declaration


【解决方案1】:

未初始化的局部变量将具有 indeterminate 值,这看起来是随机的。读取它们的不确定值会导致undefined behavior

【讨论】:

    【解决方案2】:

    从未初始化的int 读取是未定义的行为。您看到的输出可能是当前存储在为变量保留的内存位置中的数据。

    但这并不重要,因为任何事情都可能发生;重要的是要防止未定义的行为,最好在这里通过初始化变量来完成:

    int var1 = 0;
    int var2 = 0;
    // and so on
    

    另外请注意,如果您使用适当的警告级别,您的编译器肯定会就此发出警告。在编译器的文档中查找它并养成不忽略任何警告的习惯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多