c++ - 无符号变量的默认值是多少?
问题描述
我有一个 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。
推荐阅读
- postgresql - PostgreSQL - 如何在 string_agg() 中的每个条目上显示相应的字符串?
- c# - 如何使用 CodeTypeDeclaration 创建带有 CodeDom 的内部类?
- uitableview - 如何为更大的标签栏全局设置底部插图?
- r - 禁用图例双击事件
- objectify - 对象化保存的问题
- python - 使用 OpenCV 和 Python 检测图像中的弧
- iframe - 如何在 DialogFlow web 的 iFrame 中获取访问令牌
- javascript - Mini-css-extract-plugin 不会将我的 css 与 sass 捆绑到一个文件中
- sql-server - 用于 SQL Server 的 sqlcmd
- java - 在某些情况下如何忽略 @SQLDelete 注释