此问题已在此处有答案:
Default variable value(10个答案)
两年前关闭。
我有一个C++的程序。我做了这样的事情:
#include <iostream>
int main() {
unsigned x,cifra,cifraOld;
std::cout<<cifra;
}
由于某种原因,输出为8
。有人能告诉我8
是否是无符号变量的默认值吗?如果不是,为什么这会发生在我身上?
将该行更改为unsigned x,cifra=0,cifraOld;
将输出0
。
此问题已在此处有答案:
Default variable value(10个答案)
两年前关闭。
我有一个C++的程序。我做了这样的事情:
#include <iostream>
int main() {
unsigned x,cifra,cifraOld;
std::cout<<cifra;
}
由于某种原因,输出为8
。有人能告诉我8
是否是无符号变量的默认值吗?如果不是,为什么这会发生在我身上?
将该行更改为unsigned x,cifra=0,cifraOld;
将输出0
。
1条答案
按热度按时间u5i3ibmn1#
本声明:
将
cifra
初始化为 indeterminate 值。从一个不确定的值中阅读,例如就像这样:
调用未定义行为(UB)。
对于带有UB的程序,打印8是完全可能的。它可以打印0、42或“hello world”。事实上,程序可以打印不只是 * 任何值 ,但就语言而言, 任何事情 * 都可能发生。在实践中,您通常会得到一些数值(这是一个恰好位于从中读取的内存位置的值)。如果你幸运的话,程序会分割错误,并在UB导致严重问题之前提醒你。