gpt4 book ai didi

c++ - 联盟的内存映射

转载 作者:行者123 更新时间:2023-12-02 10:17:09 56 4
gpt4 key购买 nike

union Data {
int a;
double b;
Data(){
a = 1;
b = 0.5;
}
};

int main(){

Data udata;
udata.a = 999999999;
cout << udata.a << "\t" << udata.b << endl;
return 0;
}


result: 999999999 0.5

我知道 ab映射到相同的内存位置,但是在将9999t9999分配给 b之后,为什么 a仍然等于0.5。

最佳答案

原因是它们的不同数据类型将它们分开。您的union代码将a定义为整数,并将b定义为double,即使拥有相同的内存地址,b的值仍保持不变。如果将a设置为double或b设置为整数,则值将一起更改。

请看以下内容:

union Data {
int a;
int b; // changed double to int

Data() {
a = 1;
b = 0.5;
}
};

希望它能帮助您理解。

关于c++ - 联盟的内存映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61557447/

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