//1 | //1 //3
//1 | //4
//2 //4 | //2 //2
//8 |
1+1+2+4+8=16 | 1+3+4+2+2=12
//1 //3 | //1
//4 | //1 //2
//1 //3 | //4
1+3+4+1+3=12 | 1+1+2+4=8
//2 //6 | //2 //6
//8 | //8
//4 //4 | //4 //4
//8 | //8 //80
//1 //7 | //1 //7
//4 //4 | //4 //4
24+2+6+4+4=40 | 80+4+4+1+7+2+6+4+4=112
//1 //3 | //1
//4 | //1 //3
//2 //2 | //1
1+3+4+2+2=12 | 1+3+1=5
//4
//1 //3
//8
//1 //1
//2 //4
//8
4+1+3+8+1+1+2+4+8=32
三种方法判断大小端存储
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
union A
{
int a1;
char a2;
};
int main(int argc, const char *argv[])
{
//求大小端存储方法一强制类型转换
int a=0x12345678;
char b=(char)a;
if(b==0x12){
printf("大端存储\n");
}else if(b==0x78){
printf("小端存储\n");
}
//求大小端存储方法二指针
short c=0x12345678;
char *p=&c;
if(*p==0x12){
printf("大端存储\n");
}else if(*p==0x78){
printf("小端存储\n");
}
//求大小端存储方法三共用体
union A m;
m.a1=0x12345678;
if(m.a2==0x12){
printf("大端存储\n");
}else if(m.a2==0x78){
printf("小端存储\n");
}
return 0;
}
枚举
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef enum
{
LED1,
LED2,
LED3
}LED;
typedef enum
{
LED_ON,
LED_OFF
}LED_con;
void ini(LED L)
{
switch(L)
{
case LED1:printf("LED1 OK\n");
break;
case LED2:printf("LED2 OK\n");
break;
case LED3:printf("LED3 OK\n");
break;
}
}
void Cont(LED L,LED_con D)
{
switch(D)
{
case LED_ON:
switch(L){
case LED1:printf("LED1初始化完成,已打开\n");break;
case LED2:printf("LED2初始化完成,已打开\n");break;
case LED3:printf("LED3初始化完成,已打开\n");break;
};break;
case LED_OFF:
switch(L){
case LED1:printf("LED1初始化完成,已关闭\n");break;
case LED2:printf("LED2初始化完成,已关闭\n");break;
case LED3:printf("LED3初始化完成,已关闭\n");break;
};break;
}
}
int main(int argc, const char *argv[])
{
ini(LED2);
Cont(LED1,LED_ON);
return 0;
}