这是如何允许编译的?我将结构的未初始化值传递给自身:
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
?
答案 0 :(得分:2)
我认为有 2 个答案。
一个是基于常识:对于这样的代码,是否有任何可以预期的合理行为?我想不出任何...
一个是基于事实的:读取未初始化的变量是一个 UB。