c++ - 在 C/C++ 中将未初始化的结构值传递给自身
问题描述
这是如何允许编译的?我将结构的未初始化值传递给自身:
typedef struct test {
int a;
} test;
int main(){
test t= {t.a};
return 0;
}
同样可以在 C++ 中使用构造函数和引用来完成:
class test{
public:
test(const test& input) : a(input.a){}
int a;
};
int main(){
test t(t);
return 0;
}
这会导致未定义的行为吗?
编辑
如果这个值被初始化了,会有什么不同吗?如果还没有完全定义,如何t.a
在这个表达式中使用?test t= {t.a};
t
解决方案
我认为有2个答案。
一个是基于常识的:这样的代码是否有任何合理的行为?我想不出任何...
一个是基于事实的:读取未初始化的变量是一个 UB。
推荐阅读
- c - 在 make 文件中包含输入语句和条件
- r - 如何从 r 中的 binned/interval 数据创建闪避条图?
- python - 如何在 Python 中删除十六进制字符
- javascript - WordPress:如果帖子没有特色图片,则显示后备缩略图
- reactjs - React 表正在按过滤器排序
- java - 使本机代码在 Android Studio 的模块中工作时出现问题
- css - 在 CSS 中,min-height 在所有浏览器中总是优先于 max-height 吗?
- sql - 如何在查询中选择除所选 MONTH 和 YEAR 之外的数据
- javascript - 'sed' 命令不适用于 java 脚本
- python - 尝试从 Azure VM 连接到 Azure 托管实例中的 sql 时超时