c++ - 为什么在较小范围内声明变量后我得到垃圾值
问题描述
int tar = 0;
{
int tar = tar;
cout<<tar;
}
它打印出 814005873,但我期望的是 0。
解决方案
外部范围内的变量不相关。你会得到同样的结果
{
int tar = tar;
cout<<tar;
}
tar
未初始化,因此使用其值来初始化自身是未定义的行为。所有主要编译器都警告这种tar
未初始化使用的情况。例如:https ://godbolt.org/z/3x437P46K 。不要忽视警告!
这不是错误可能看起来很奇怪,但对于自定义类型,这样的初始化可能是有意义的。例如:
struct foo {
foo& other;
foo(foo& other) : other(other) {}
};
int main()
{
foo f = f;
}
f
持有对自身的引用。
推荐阅读
- javascript - 如何使用来自 Ajax 响应的日期对数组数据进行分组?
- python - 合并 csv 文件并添加标题行 - 垂直
- javascript - 视口中的背景图像显示
- java - 如何在 Java 中使用拆分字符串和数组获取最年长的人的姓名
- c - 有人可以用最简单的方式向我解释 snprintf 的工作原理吗?
- gradle - Gradle 同步失败:registry.bin(访问被拒绝)
- sql - Tempdb 在删除数百万条记录时增长
- java - 如何在maven中重命名下载为依赖项的jar
- c++ - Mongoose Web 服务器文件流 API
- reactjs - 将代码块作为道具传递给数组