signed:有符号的
unsigned:无符号的
整型:
char //字符数据类型
short //短整型
int //整形
long //长整型
浮点型:
float
double
构造类型:
数组类型
结构体类型 struct
枚举类型 enum
联合类型 union
正数的原反补都相同;内存中存放的是二进制补码
空类型:void
无类型
int a=-1;
//10000000 00000000 00000000 00000001 原码
//11111111 11111111 11111111 11111110 反码
//11111111 11111111 11111111 11111111 补码
内存中存补码:符号位和数值位统一处理,CPU只有加法器
1-1=1+(-1)补码计算:
00000001
+11111111
=00000000
字序存储:
int a=0x11223344;//以11223344为例
小端字序存储:把一个数字的低位字节的内容存放在内存地址低地址处,高位字节的内容存放在内存地址高地址处
大端字节序、小端字节序、判断当前机器的字节序方法:
参考整形数字1的存储,采用char的单字节数据特性判断存储数据的首地址的元素,如果首地址的元素是1,则为小端字节序的存储方式
如下
int a = 0x12345678;
存储方式为:小端存储方式
#include <stdio.h>
int check_sys()
//如果是大端,返回0
//如果是小端,返回1
{
int a = 1;
char* p = (char*)&a;//强制取a地址转换成char类型
if (*p == 1)//如果首地址的元素是1,则表示是小端
return 1;//返回 1
else
return 0;
}
int main()
{
int ret = check_sys();
if (1 == ret)
{
printf("小端\n");
}
else
{
printf("大端\n");
}
return 0;
}