0
点赞
收藏
分享

微信扫一扫

共用体与枚举类型

#define _CRT_SECURE_NO_WARNINGS 1 
#include<stdio.h>

//枚举类型:
//enum Color
//{
// //枚举的可能取值--常量
// red=2,//默认情况下第一个值是:0
// green=5,
// blue
//};
//int main()
//{
// //green = 5; //err:枚举类型的取值是常量类型,除了赋初值外,不能再赋其它值
// //enum Color s = 3; //err:int类型的值不能赋给enum Color(c语言不报错,但c++会报错)
// printf("%d %d %d\n", red, green, blue);
// return 0;
//}


//联合--共用体类型:
//union Un
//{
// int i;
// char c;
//};
//int main()
//{
// union Un u;
// printf("%d\n", sizeof(u)); //4
//
// u.i = 0x11223344;
// //小端存储:44 33 22 11
//
// u.c = 0x55;
// //小端存储:55 00 00 00
//
// //因为他们用的同一个首地址,所以:
// printf("%x\n", u.i);//11223355
// return 0;
//}


//计算联合体的大小:
//1、联合体的大小至少是最大成员的大小
//2、当最大成员不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍
union Un1
{
int i;
char c[5];
};
union Un2
{
short c[7]; //14
int i; //4
};
int main()
{
union Un1 u1;
union Un2 u2;
int c[7];
printf("%d\n", sizeof(c));//28
printf("%d\n", sizeof(u1));
printf("%d\n", sizeof(u2));
return 0;
}


//判断是小端模式还是大端模式:
//int check_sys()
//{
// int a = 1;
// return *(char*)&a;
//}
//int check_sys()
//{
// union Un
// {
// int i;
// char c;
// }u;
// u.i = 1;
// //返回1:表示小端
// //否则:表示大端
// return u.c;
//}
//int main()
//{
// int ret = check_sys();
//
// if(1==ret)
// {
// printf("小端\n");
// }
// else
// {
// printf("大端\n");
// }
// return 0;
//}

举报

相关推荐

0 条评论