typedef是重新定义一种数据类型,并不创建这个结构类型下的变量数据。
而在结构类型中如代码二中的变量定义方式,此变量所属的类型依然为union,并在union的数据名创建了一个union的变量。
#include<stdio.h>//代码一
typedef union {
int i;
char ch[sizeof(int)];//不同编译环境int类型所占字节数不同,故用sizeof。
} LIANHE;//LIANHE即为union类型,但不是变量。
int main()
{
LIANHE lianhe;//需重新定义变量,再次体现出LIANHE不是变量,而是类型。
lianhe.i=1234;
int a=0;
for(a=0;a<sizeof(int);a++){
printf("%02hhX",lianhe.ch[a]);
}
return 0;
}
#include<stdio.h>//代码二
union LIANHE {
int i;
char ch[sizeof(int)];//不同编译环境int类型所占字节数不同,故用sizeof。
} lianhe;//此lianhe为变量,与代码一区分。
int main()
{
lianhe.i=1234;
int a=0;
for(a=0;a<sizeof(int);a++){
printf("%02hhX",lianhe.ch[a]);
}
return 0;
}