![]() |
1
3
一般来说,您是对的,将一种类型的值写入联合,然后将其作为另一种类型读取是未定义的行为。另一方面,iirc标准明确地允许将任何内容转换为char数组。我从来没有百分之百地清楚哪个优先,但我使用过的所有实现都允许联合铸造做你想做的事情。 |
![]() |
2
3
我想这是未定义的,因为您所做的是特定于平台的。alpha最终将成为一个不同的值,这取决于您的平台是big-endian还是little-endian。
发明union的真正原因是允许人们在较小的内存中容纳更多的数据。传统上,与联合一起,您需要在联合外部保存一些标记(可能是位掩码中存储的一个或两个位),以记住联合的哪个成员是活动的。使用这个标记,您可以仔细地编写对联合的访问代码,以便只读取活动成员。 |
![]() |
3
0
也不清楚机器的末端是什么。让我们假设小端点。 在这种情况下,0x12D993(十进制1235347)将存储为 0x93 0xd9 0x12 0x00(递增地址)
|
![]() |
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
![]() |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
![]() |
rainer · 后台插入程序的初始化 1 年前 |
![]() |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
|
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
|
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |