社区
C语言
帖子详情
Union存储问题
jackey_option
2008-10-26 09:41:35
1.
union U{int n;char c[4];}uu;
uu.c[0]=1;uu.c[1]=1;
cout<<uu.n;
输出结果:-859045631
2.
union U{int n;char c[4];}uu;
uu.c[0]=1;uu.c[1]=1;
cout<<uu.n;
输出结果:257
各位大侠谁能解释一下
...全文
223
10
打赏
收藏
Union存储问题
1. union U{int n;char c[4];}uu; uu.c[0]=1;uu.c[1]=1; cout<<uu.n; 输出结果:-859045631 2. union U{int n;char c[4];}uu; uu.c[0]=1;uu.c[1]=1; cout<<uu.n; 输出结果:257 各位大侠谁能解释一下
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jznhljg
2008-10-26
打赏
举报
回复
我上面 说的n没初始化...是错的.
刚看书又学习了下...呵.不好意思.从位的角度来分析这个应该就没什么问题了?
jznhljg
2008-10-26
打赏
举报
回复
第一个:你只初始化了c[4]的前两个.也就是低位的两个字节.高数是"随机数",也就是"垃圾值"
从位的角度来看.就是:*******..*0000000100000001 *是内存中本来就存在的"垃圾值"
所以输出每次都不一样.
第二个:你初始化了c[4]的全部.也就是四个字节都被初始化了.从字节角度来看是:0011
从位的角度来看.就是:00000...0 0000000100000001 也就是2^8+2^0=257
p.s.:你也说了,联合是在单块存储区中管理不同类型的数据.但归根到底,数据还是在用2进制01存储...
LanQuark
2008-10-26
打赏
举报
回复
如果调试状态编译, vc会把未赋值的字节全部设为0xC, 这样你的union值实际为0xCCCCC0101 = 3435921665 = -859045631
release态的输出可能不一样, 但是也可能固定值, 取决于程序运行的状态. 所谓随机数指的是结果按照c++语言不确定
jackey_option
2008-10-26
打赏
举报
回复
[Quote=引用 5 楼 colaLQ 的回复:]
1. int n的低字节被设为0x0101, 高字节为随机数, -859045631 & 0x0101 = 0x0101 = 256
2. 内存碰巧被初始化为0, 所以0x0101=256
[/Quote]
不是随机数吧,我每次运行程序都是那个结果
不知道大家在自己的机器上是不是这样的结果
LanQuark
2008-10-26
打赏
举报
回复
写错了, 0x0101=257
LanQuark
2008-10-26
打赏
举报
回复
1. int n的低字节被设为0x0101, 高字节为随机数, -859045631 & 0x0101 = 0x0101 = 256
2. 内存碰巧被初始化为0, 所以0x0101=256
jackey_option
2008-10-26
打赏
举报
回复
不好意思修改一下:
2.
union U{int n;char c[4];}uu;
uu.c[0]=1;uu.c[1]=1; uu.c[2]=0;uu.c[3]=0;
cout < <uu.n;
输出结果:257
jackey_option
2008-10-26
打赏
举报
回复
当然不是什么垃圾值
因为不同变量是占用共同的存储区,只是在值输出时
会根据类型不同进行不同值的输出
看来你对Union不很了解
珍惜生命远离CPP
2008-10-26
打赏
举报
回复
.....
我怎么看两段代码都一样,我没眼花吧
jznhljg
2008-10-26
打赏
举报
回复
联合的uu必须足够大,以保存里面类型中的最大的一种,这些类型中的任何一种都可赋给uu,
但必须保证是一致的,即读取的类型必须是最近一次存入的类型。
如果保存的类型与读取的类型不一致,其结果取决于具体的实现。
P.S:楼主的n始终没赋过值...输出的是内存中的"垃圾值"吧.
错误:sem_
union
的
存储
大小未知
问题
的解决方法
今天在编译代码的时候提示 错误: ‘sem_
union
’的
存储
大小未知
问题
原因:在新版2.6内核中关于
union
sem_
union
这个联合体已经被注释了,需要自己写这个联合体. 解决方案:在C文件中先定义:
union
semun { int val; ...
c语言
union
内存大小,C语言、C++中的
union
用法总结
开始的话已经好长时间没有更新了,对不起...别的先不说了,都工作这么长时间了,还回过头来总结
union
,确实有点过分,要是和大家说我一直从事于C++开发,还不懂
union
,大家可能还真的不信。我们每天都在总结那些看...
精品课:MySQL5.7零基础入门与实战(精讲)
第一章:MySQL 零基础入门详解 01- MySQL导学课 第二章 学习MySQL 环境...27- 相关、不相关子查询 28- 子查询 all,any 29- 子查询exists not exists 30- 索引 31- 视图 32-
存储
过程 33-自定义函数 34- 数据备份和还原
MySQL
存储
过程中使用
union
但是若这两个 SQL 子句使用同一个参数时,
存储
过程中的
union
会失效(不能只传入一个参数,在
存储
过程中使用多次)。 经过多番测试,可以在
存储
过程传入两个一模一样的参数。这样
问题
就得到了解决。
存储
过程语句:...
Linux编译需要
存储
大小,编译代码时提示sem_
union
存储
大小未知
问题
怎么解决办法...
编译代码时提示sem_
union
存储
大小未知
问题
怎么办?今天在编译代码的时候提示 错误: ‘sem_
union
'的
存储
大小未知应该怎么解决呢,下面给各位朋友带来相关解决办法,有此
问题
的赶快来看看吧。
问题
原因:在新版2.6内核中...
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章