c++ unsigned变量的默认值是什么?[副本]

0ejtzxu1  于 2023-07-01  发布在  其他
关注(0)|答案(1)|浏览(131)

此问题已在此处有答案

Default variable value(10个答案)
两年前关闭。
我有一个C++的程序。我做了这样的事情:

#include <iostream>
int main() {
unsigned x,cifra,cifraOld;
std::cout<<cifra;
}

由于某种原因,输出为8。有人能告诉我8是否是无符号变量的默认值吗?如果不是,为什么这会发生在我身上?
将该行更改为unsigned x,cifra=0,cifraOld;将输出0

u5i3ibmn

u5i3ibmn1#

本声明:

unsigned cifra;

cifra初始化为 indeterminate 值。
从一个不确定的值中阅读,例如就像这样:

std::cout<<cifra;

调用未定义行为(UB)。
对于带有UB的程序,打印8是完全可能的。它可以打印0、42或“hello world”。事实上,程序可以打印不只是 * 任何值 ,但就语言而言, 任何事情 * 都可能发生。在实践中,您通常会得到一些数值(这是一个恰好位于从中读取的内存位置的值)。如果你幸运的话,程序会分割错误,并在UB导致严重问题之前提醒你。

相关问题