猿问

菜鸟关于共用体变量赋值的问题

共用体变量为最后一次存放的成员起作用,是说最后一次存放的成员覆盖前面存放的成员吗?如果最后一次存放的成员所占内存空间并非最大,那它覆盖内存空间最大的成员是只从前覆盖还是保持原来的元素只内存空间扩大至覆盖成员内存空间大小。如: union dat{float i; int t; }x; i=2009.0; t=15; 那么最后共用体变量为 ①1509.0 内存空间与i同大 或②15 内存空间与i同大
谢偃
浏览 1529回答 2
2回答

angie

先说说你这问题的格式,不知道是不是用手机提问的,读起来十分困难是会覆盖掉之前的数据的union 申请的内存是占空间最大的成员的大小,也就是说,所有的成员共用同一块内存,如果你计算各个成员的地址,你会发现他们是一样的,这个地址也是该 union 的地址float 和 int 在内存中的布局是不一样的。如果在你的机器上,float 和 int 一样大,赋值 `x.t = 15;` 之后,读取 x.i 的值肯定不是 1509.0,到底是多少,这就看在你机器上如何解码咯。最后,如果你十分想要探索的话,你完全可以写下代码试一下
随时随地看视频慕课网APP
我要回答