c++11 - 奇怪的 C++ 变量初始化
问题描述
我知道这是一个基本的话题。但是我遇到了一个非常奇怪的案例。这是我的代码的两个版本: 版本 1:
int num;
char *ptr;
std::cout << (num == 0) << std::endl;
std::cout << (ptr == nullptr) << std::endl;
输出:
1
0
版本 2:
int num;
char *ptr = nullptr;
std::cout << (num == 0) << std::endl;
std::cout << (ptr == nullptr) << std::endl;
输出:
0
1
似乎整数 num 的初始值取决于指针 ptr 的初始化。
谁能解释一下?我读了一些其他的帖子,但仍然不明白。我尝试编译和运行很多次。该值似乎不是随机的。总是这样的结果。
我正在使用 g++ init.cc -o out -std=c++11
提前致谢!
解决方案
您的程序通过使用未初始化变量的值导致未定义的行为。正如链接所解释的,这意味着任何事情都可能发生,并且输出毫无意义。你不应该浪费时间试图理解输出;相反,修复程序。
推荐阅读
- python - 将年度日期更改为月度日期并添加新值以填充月度日期
- python - 替换pandas groupby并申请提升性能
- mysql - 如何在管道运行时将 Azure Key Vault 密码注入 mysql 脚本
- angular - PrimeNG p-tree:如何根据来自 json 文件的布尔值从 ptree 中隐藏某些节点?
- php - Drupal 8:通知消息未翻译
- excel - 宏看不到工作表 - “运行时错误 9”
- components - a-frame superhands 定制手模型
- python - 在 tqdm 中的 for 循环后更改描述
- xml - 搜索 xml 到 jekyll 转换器
- r - R:有没有办法在两个不同的 dfs 中找到与两个字符串列的相同第一个元素的部分字符串匹配?