数据类型的介绍:
基本的内置类型char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数类型的意义: 1. 使用这个类型开辟内存空间的大小(大小决定了使用范围)。 2. 如何看待内存空间的视角。 整型家族:
char unsigned char//0-255 signed char//-128--127 short unsigned short [int] signed short [int] int unsigned int signed int long unsigned long [int] signed long [int]
加了中括号的代表可以省略,有符号的整型也可以省略。
浮点数家族:
float double 构造类型:数组类型 > 结构体类型 struct > 枚举类型 enum > 联合类型 union
指针类型:
int *pi; char *pc; float* pf; void* pv;
整型在数据中的存储: 需要了解原码,反码,补码。
原码、反码、补码 计算机中的有符号数有三种表示方法,即原码、反码和补码。 三种表示方法均有 符号位 和 数值位 两部分,符号位都是用 0 表示 “ 正 ” ,用 1 表示 “ 负 ” ,而数值位 三种表示方法各不相同。 原码 直接将二进制按照正负数的形式翻译成二进制就可以。 反码 将原码的符号位不变,其他位依次按位取反就可以得到了。 补码 反码 +1 就得到补码。 正数的原、反、补码都相同。 对于整形来说:数据存放内存中其实存放的是补码。 举个例子如下:
一道例题:
发生整型提升,会按照符号位补全32个比特位。
i小于255恒成立,所以是死循环。
设计一个小程序来判断当前机器的字节序(大小端)
#includeint check_sys() { int i = 1; return (*(char *)&i); } int main() { int ret = check_sys(); if(ret == 1) { printf("小端n"); } else { printf("大端n"); } return 0; }
把整型的指针强制转换为字符的指针,只访问一个字节。
函数没有接收返回值,就算你给他值也不做任何的回应。
浮点数的存储:



