标题:联合输出
只看楼主
liu0919
Rank: 2
等 级:论坛游民
帖 子:124
专家分:35
注 册:2013-5-13
结帖率:87.8%
已结贴  问题点数:10 回复次数:7 
联合输出
[code#include<stdio.h>
union book{
               int leng;
               double kk;
               char a_name; };
int main()
{
    union book x;

    x.a_name='h';
    x.kk=12.2;
    x.leng=1;
    printf("%c,%f,%d",x.a_name,x.kk,x.leng);
    return 0;
}
][/code]这个a_name为什么显示不出来
搜索更多相关主题的帖子: double return 联合 
2014-01-09 11:00
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:4 
这玩意不咋靠谱

这个代码是第一个int leng  无法正确输出
程序代码:
#include"stdio.h"
union book
{
    int leng;
    double kk;
    char a_name;
};
int main()
{
    union book x;
    x.leng=100;
    x.kk=12.2;
    x.a_name='h';
    printf("%d\n",x.leng);
    printf("%.2f\n",x.kk);
    printf("%c\n",x.a_name);
    return 0;
}


DO IT YOURSELF !
2014-01-09 13:41
不回头
Rank: 1
等 级:新手上路
帖 子:1
专家分:4
注 册:2013-12-29
得分:4 
你把共用体里面的顺序该一下,要把x.a_name=‘h'放在最后面(如果用你赋值方法的话)。
2014-01-09 22:15
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
得分:4 
楼主需要再看看联合的定义,不要当成结构体那么用了。

好好学习,天天想上
2014-01-10 00:22
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
网上找的

1、union中可以定义多个成员,union的大小由最大的成员的大小决定。
2、union成员共享同一块大小的内存,一次只能使用其中的一个成员。
3、对某一个成员赋值,会覆盖其他成员的值(也不奇怪,因为他们共享一块内存。但前提是成员所占字节数相同,当成员所占字节数不同时只会覆盖相应字节上的值,比如对char成员赋值就不会把整个int成员覆盖掉,因为char只占一个字节,而int占四个字节)

4、联合体union的存放顺序是所有成员都从低地址开始存放的。

DO IT YOURSELF !
2014-01-10 08:24
liu0919
Rank: 2
等 级:论坛游民
帖 子:124
专家分:35
注 册:2013-5-13
得分:0 
回复 5楼 wp231957
居然要按顺寻来赋值
2014-01-10 14:50
liu0919
Rank: 2
等 级:论坛游民
帖 子:124
专家分:35
注 册:2013-5-13
得分:0 
回复 2楼 wp231957
你的x.leng输出错误了
2014-01-10 14:52
liu0919
Rank: 2
等 级:论坛游民
帖 子:124
专家分:35
注 册:2013-5-13
得分:0 
回复 4楼 zhaogay
二楼的还是错的
2014-01-10 15:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-426309-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.142782 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved