#include <stdio.h>
/*1. 利用不同的数据类型占用空间不同*/
{
short int x;
char y,z;
x = 0x1122;
y = ((char *)&x)[0]; //低地址
z = ((char *)&x)[1]; //高地址
printf("y=%x\n",y);
printf("z=%x\n",z);
return 0;
}
/*2.***************************************/
typedef unsigned char BYTE;
int main(int argc, char* argv[])
{
unsigned int n,*p;
p = &n;
n = 0;
*(BYTE *)p = 0xff;
if(n == 0xff)
{
printf("The endian of cpu is little\n");
}
else
{
printf("The endian of cpu is big\n");
}
return 0;
}
/*利用指针取值时不同类型读取字节数不一样*/
#include<stdio.h>
int main()
{
int x = 0x1;
char *p = (char *)&x;
if(*p)
{
printf("little\n");
}
else
{
printf("large\n");
}
return 0;
}
/*4.*****************************************/
/*利用union*/
int checkCPU()
{
{
union w
{
int a;
char b;
} c;
c.a = 1;
return (c.b == 1);
}
}