无符号变量的默认值是多少



我有一个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或"0";你好世界";就此事而言。事实上,该程序不仅可以打印任何值,而且就语言而言,所有都可能发生。在实践中,您通常会得到一些数值(这是一个恰好位于读取的内存位置的值(。如果你幸运的话,这个程序会出错,并在UB引发严重问题之前提醒你。

最新更新