St.*_*rio 0 c++ language-lawyer
读取未初始化的变量会导致未定义的行为,例如
#include <iostream>
int main()
{
int a;
std::cout << a << std::endl; // undefined behavior
}
Run Code Online (Sandbox Code Playgroud)
有人可以对这个事实给出正式的解释吗?
我认为这是相关部分:
4.1 左值到右值的转换
1 - 非函数、非数组类型 T 的左值可以转换为纯右值。如果 T 是不完整类型,则需要此转换的程序是格式错误的。如果泛左值引用的对象不是 T 类型的对象,也不是从 T 派生的类型的对象,或者该对象未初始化,则需要此转换的程序具有未定义的行为。
变量是左值,我认为“左值到右值转换”是获取变量值的过程。
(注意 - 我不熟悉 C++ 标准,所以我可能没有找到适用于此示例的部分。我所做的只是在 PDF 中搜索“未初始化”,并查找看起来最相关的命中。)
| 归档时间: |
|
| 查看次数: |
976 次 |
| 最近记录: |