This question already has answers here:
Default variable value
(9个答案)
在4个月前关闭。
我有一个C++程序。我做了这样的事情:
将行更改为
从不确定的值读取,例如像这样:
对于UB程序,完全可以打印8。它可以打印0或42,也可以打印“hello world”。实际上,该程序不仅可以打印任何值,而且就语言而言,任何事情都可能发生。在实践中,通常会得到一些数字值(该值恰好位于读取的内存位置)。如果您很幸运,该程序将进行段错误处理,并在导致严重问题之前通知您UB。
(9个答案)
在4个月前关闭。
我有一个C++程序。我做了这样的事情:
#include <iostream>
int main() {
unsigned x,cifra,cifraOld;
std::cout<<cifra;
}
由于某种原因,输出为8
。有人可以告诉我8
是无符号变量的默认值吗?如果没有,为什么这会发生在我身上?将行更改为
unsigned x,cifra=0,cifraOld;
将输出0
。 最佳答案
此声明:
unsigned cifra;
将cifra
初始化为不确定的值。从不确定的值读取,例如像这样:
std::cout<<cifra;
调用未定义的行为(UB)。对于UB程序,完全可以打印8。它可以打印0或42,也可以打印“hello world”。实际上,该程序不仅可以打印任何值,而且就语言而言,任何事情都可能发生。在实践中,通常会得到一些数字值(该值恰好位于读取的内存位置)。如果您很幸运,该程序将进行段错误处理,并在导致严重问题之前通知您UB。
09-26 22:27