当前位置: 首页 > 知识库问答 >
问题:

为什么未初始化的变量打印一个奇怪的负值?[重复]

景帅
2023-03-14

为什么未初始化的变量打印一个奇怪的负值?

int x;
cout << x << endl;

共有3个答案

景恩
2023-03-14

当变量未初始化时,它会显示“垃圾值”。这意味着它可以是来自任何地方的任何任意数字,也可以是来自另一个正在运行的应用程序或来自大内存池的随机数。

松俊才
2023-03-14

未初始化的变量是一个已经声明但在使用前没有设置为明确已知值的变量。它会有一些价值,但不可预测。

钮轩昂
2023-03-14

你正在做的(读取未初始化变量的值)是未定义的行为;任何事情都可能发生,从它看起来有效,到打印随机值,到崩溃,再到用信用卡买披萨。

 类似资料:
  • 我正在尝试设置DBMS\U元数据的输出。将\u DDL获取到SQLPlus中的myRET\u VARbind变量。 我尝试了以下脚本。sql: 但我得到: SP2-1504:无法打印未初始化的LOB变量“RET\u VAL” 我还尝试用一个/块来围绕RET\u VAL的赋值: 但是,当我尝试在SQLPlus中运行它时,会出现以下错误: 第5行的错误:ORA-06550:第5行,第1列:PLS-00

  • 为什么打印(或其他一些随机数)?什么是 printing?为什么它不是 (或 )?

  • 读取未初始化的变量会导致未定义的行为,例如 有人能给这个事实一个正式的解释吗?

  • 如果我有: 很明显,这个表达式后面的应该是零,但我看到的任何地方,他们都说这个代码的行为是未定义的,而不仅仅是的值(直到减法之前)。 很明显,编译器可以简单地在变量中使用它认为“方便”的任何垃圾值,并且它将按照预期工作。这种方法有什么问题?

  • 问题内容: 当我尝试在实例初始值设定项块内直接打印x,而在块末尾之前为x赋值时,就会出现问题: 情况1 这给出了编译时错误,指出变量x可能尚未初始化。 情况二 我不是直接打印,而是调用一个函数来打印: 这样可以正确编译并提供输出 两种情况在概念上有什么区别? 问题答案: 在JLS中,第8.3.3节。字段初始化期间的正向引用,它指出在以下情况下存在编译时错误: 有时会限制使用声明之后以文本形式出现的

  • 有些人可能会发现它类似于SO问题Java最终变量会有默认值吗?但是这个答案并没有完全解决这个问题,因为这个问题没有直接在实例初始化器块中打印x的值。 当我试图在实例初始化器块内直接打印x时,问题就出现了,同时在块结束前给x分配了一个值: 这将给出一个编译时错误,说明变量x可能尚未初始化。 我不是直接打印,而是调用一个函数来打印: 这将正确编译并提供输出 这两种情况在概念上有什么不同?