#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;
//}