gpt4 book ai didi

c++ - union 中的意外结果 (C++)

转载 作者:太空狗 更新时间:2023-10-29 21:13:48 25 4
gpt4 key购买 nike

我在高中学习,当时我正在制作一个程序来了解 union 的运作方式,但该程序给了我意想不到的结果。

这是程序:

#include <iostream>
using namespace std;

union c{
int l;
int b;
int h;
int vol;
};

int main() {
c box;
box.l=1;
box.b=2;
box.h=3;

box.vol = box.l*box.b*box.h;

cout<<"\n Volume :- "<<box.vol;
return 0;
}

输出如下:

 Volume :-  27

我想了解为什么会这样。

最佳答案

您遇到此问题是因为您将 union 视为 struct

Union 分配的内存空间可以包含任何 个元素,但不能包含所有 个元素。按照您编写的方式,三个名称有效地指向同一地址。这意味着,根据分配,您最终将 3 放入分配的空间。

换句话说,按照您的编写方式,您只是创建了四种引用相同数据的方式。

使用 union 的一个例子是描述两个或多个交替结构。例如:

union Shape {
struct triangle {
int base;
int height;
}
struct rectangle {
int length;
int width;
}
}

您现在可以使用单一数据类型来处理这两种情况。

关于c++ - union 中的意外结果 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com