如何解决C ++中的联合请解释一下
#include <iostream>
#define print(x) std::cout << x
#define println(x) std::cout << x << std::endl
struct Vector2 {
float x,y;
};
struct Vector4 {
union {
struct {
float x,y,z,w;
};
struct {
Vector2 a,b;
};
};
};
void PrintVector2(const Vector2& vector) {
println(vector.x << "," << vector.y);
}
int main() {
Vector4 vector = { 1,2,3,4 };
vector.x = 2;
vector.z = 500.0f;
PrintVector2(vector.a);
PrintVector2(vector.b);
}
任何人都可以解释这段代码中发生了什么吗?,我不明白什么是联合体 以及它们如何工作:/!
这是输出
2,2
500,4
解决方法
代码的行为是不确定的。
这仅是精心制作的 un-type 的缩写。 C ++标准不允许这样做,因为C ++ union
具有活动成员的概念。设置活动成员后,您将无法以定义的方式读取其他成员。 (您当然可以通过重新分配来更改活动成员。)
按照我的斜体字对Google进行搜索:在这里更深入地讨论毫无意义。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。