出道自己突然想到的问题(应用有此需要)

[复制链接]
5464|22
 楼主| ayb_ice 发表于 2012-3-10 10:27 | 显示全部楼层 |阅读模式
好象没有书讲到这个问题

typedef unsigned char U8;
typedef unsigned int   U16;


typedef union{

U8  u8[2];

U16 u16;
}t_UN;


t_UN test = {0x12};

问此时

test.u8[0] = ?
test.u8[1] = ?

test.u16[0] = ?
SLEET1986 发表于 2012-3-10 10:58 | 显示全部楼层
test.u8[0] = 0x12;
test.u8[1] = 0;
test.u16 = 0x12;
NE5532 发表于 2012-3-10 11:01 | 显示全部楼层
没想通楼主为啥想不出来。
chenczy 发表于 2012-3-10 11:20 | 显示全部楼层
结构体和数组
yewuyi 发表于 2012-3-10 11:34 | 显示全部楼层
LZ是否在担心高位在前还是低位在前?
 楼主| ayb_ice 发表于 2012-3-10 11:38 | 显示全部楼层
这个问题对于大端和小端是不同的
 楼主| ayb_ice 发表于 2012-3-10 11:41 | 显示全部楼层
没想通楼主为啥想不出来。
NE5532 发表于 2012-3-10 11:01
我本来是想完成仅对指定的变量进行初始化,且联合实际很复杂(比如多重结构,前后顺序颠倒,大小不一致等),这里演示的很简单
knliao 发表于 2012-3-10 11:45 | 显示全部楼层
要考虑大小端的问题。还要看编译器条件和处理器情况。
 楼主| ayb_ice 发表于 2012-3-10 11:46 | 显示全部楼层
得出一个结论,不知是否正确
对于联合变量进行定义+初始化,只能初始化联合的第一个变量(包含结构体等)
mohanwei 发表于 2012-3-10 11:54 | 显示全部楼层
我的习惯是在需要存储的大型结构体最后面加个CRC32,存储、读出、传输时两边各算各的,正确后再接着判断校验一些重要的值。
系统硬件可靠的话运行起来就没太大作用了,但起码在开发调试时可以顺利很多
mohanwei 发表于 2012-3-10 11:55 | 显示全部楼层
传入的参数也都assert一下,反正发行时会自动屏蔽掉
原野之狼 发表于 2012-3-10 12:53 | 显示全部楼层
在结构体里搞个type变量
sunhq02 发表于 2012-3-10 13:29 | 显示全部楼层
这个需要看你的编译环境是 大端在先还是小端在先
如果不清楚的话, 可以简单的试一下
coody 发表于 2012-3-10 18:35 | 显示全部楼层
软仿真马上看到结果
liujy124 发表于 2012-3-11 19:59 | 显示全部楼层
联合体,呵呵,同用一段空间···
 楼主| ayb_ice 发表于 2012-3-19 11:47 | 显示全部楼层
我在9L的结果是正确的
以前真不知道这个规定,大部分的书都没有讲到这个
coody 发表于 2012-3-19 17:39 | 显示全部楼层
不就是联合嘛,基本C语言都有详细说明,实际要看编译器的大小端
 楼主| ayb_ice 发表于 2012-3-20 08:28 | 显示全部楼层
不就是联合嘛,基本C语言都有详细说明,实际要看编译器的大小端
coody 发表于 2012-3-19 17:39
是怎样对联合进行定义时的初始化
 楼主| ayb_ice 发表于 2012-3-20 08:33 | 显示全部楼层
typedef union{
        struct{
                unsigned char x;
                unsigned int y;
                unsigned char z;
        }st;
       
        int w;
}t_UN1;

typedef union{
        int w;

        struct{
                unsigned char x;
                unsigned int y;
                unsigned char z;
        }st;
       
}t_UN2;


如果只想对其中的y成员初始化为1,请问以下应该怎么写(KEIL C51)

t_UN1 un1 = {xxxx};
t_UN2 un2 = {xxxx};
sedatefire 发表于 2012-7-9 16:43 | 显示全部楼层
这个问题对于大端和小端是不同的
ayb_ice 发表于 2012-3-10 11:38

没错,关键看大小端啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

222

主题

15494

帖子

34

粉丝
快速回复 在线客服 返回列表 返回顶部