C语言判断大小端
一般PC 和 stm32 之类的单片机都是 小端,这样更符合人类思维。
小端即 高位高 地址,低位低 地址
1 #include<stdio.h> 2 3 int main() 4 { 5 6 short int x; 7 char x1,x2; 8 x = 0x1234; 9 10 /*==================================== 11 传统的c风格的强制转换 很危险,要小心对待 12 当然下面两行代码也可以写成 13 x1 = ((char*)&x)[0]; 14 x2 = ((char*)&x)[1]; 15 ==================================*/ 16 17 x1 = *((char*)&x); 18 x2 = *(((char*)&x)+1); 19 20 /*小端是,高位保存在内存的高地址中,而数据的低位保存在内存的低地址中*/ 21 printf("x1 = %x addr: %x\n",x1,&((char*)&x)[0]); 22 printf("x2 = %x addr: %x\n",x2,&((char*)&x)[1]); 23 24 return 0; 25 26 }
IDE: C-Free5.0 MinGW
执行结果: