//数据的存储1

//整形家族:char、short、int、long。

//浮点型家族:float、double。

//构造类型:数组类型、结构体类型、枚举类型、联合类型。

//指针类型:int* pi、char*pc、float*pf、void*pv。

//空类型:void表示无返回空类型,通常用于函数的参数。

void test()//无返回,直接打印,

{

	printf("hehe\n");

}

int main()

{

	test();

	return 0;

}

//整型在内存中的存储

int main()

{

	int a = 20;

	//000000000000000000000000000010100--原码

	//000000000000000000000000000010100--反码

	//000000000000000000000000000010100--补码

	//0x00000014,二进制转换为16进制,0x表示十六进制。

	int b = -10;

	//100000000000000000000000000001010--原码

	//111111111111111111111111111110101--反码

	//111111111111111111111111111110110--补码

	//0xFFFFFFF6,F等于16,两个符号占一个字节FF FF FF F6

	return 0;

}

//有符号数组和无符号数字由原码、反码、补码。

//无符号数和有符号数中的正数的原码、反码、补码都是一样的。

//数据存放的整数是以补码储存的。因为这个时候加法和减法可以统一处理。

//1-1在电脑中会转换成1+(-1),

//补码=反码+1

//大端小端模式:大端储存模式是将低位储存到高地址中,反之高位放在低地址。小端存储模式指高位储存到高地址,同理。前者是顺序储存,后者是倒序储存。


int main()

{

	//写一段代码告诉我们这台电脑的储存模式

	int a = 1;

	//大端:00 00 00 01    小端:01 00 00 00

	//取出一个字节看是01还是00,如果是01那么是小端储存,如果是00那么是大端储存。

	char* p = (char*)&a;

	if (*p == 1)

	{

  printf("小端\n");

	}

	else

  printf("大端\n");

	return 0;

}

int check_sys()

{

	int a = 1;

	char* p = (char*)&a;

	/*if (*p == 1)

  return 1;

	else

  return 0;*/

	return *p;

}

int check_sys()

{

	int a = 1;

	return *(char*)&a;

}

//指针类型的意义:

//因此指针类型决定了指针进行解引用的时候能够访问空间的大小,int* p,*p可以访问4个字节,char *p,*p只能访问一个字节,double* p,*p能够访问8个字节

int main()

{

	//写一个函数,返回1:小端。返回2:大端

	int ret = check_sys();

	if (ret == 1)

	{

  printf("小端\n");

	}

	else

	{

  printf("大端\n");

	}

	return 0;

}