一.字符串类型
类型的意义:1,使用这个类型开辟内存空间的大小(决定了使用范围)
二.字符储存的规则
字符存储是凭借Ascall码值,而正好ascall码值也属于整型,所以char也归于整型
int main() { char x = 'a'; printf("%c\n", x);//a printf("%d", x);//97 return 0; }
三.void
*void表示空类型(无类型),通常用于1(函数的返回类型)2(函数指针)3(指针类型)
例:
int main() { void* p = NULL; int a = 10; void* p = &a; //两个重要规则 1.不能进行运算 p1++ err 2.不能取地址 *p err }
四.原反补码(整型)
- 均有符号位(0表示正,1表示负)和数值位。
- 正数的原反补相同
- 负数的原反补各不相同
1.原反补(正负数)的表示方式:
int a=20; int b=-20; 4byte=32bit; 正数的原反补相同 20 00000000000000000000000000010100 负数的原反补 -20 1 0000000000000000000000000010100 原码 1 1111111111111111111111111101011 反码 符号位不变 数值位按位取反 1 1111111111111111111111111101100 补码 反码+1
.原反补码的相互转换规则:
- 对于整形来说:数据存放在内存中实际上存放的是补码。
- 原码到补法: 取反后,+1
- 补码到原码:法一:-1后,取反 法二:取反后,+1
五.计算机实现减法的方式
int c = 1 - 1; //1-1 //1+(-1) // 00000000000000000000000000000001 1的补码 // 11111111111111111111111111111111 -1的补码 //1 00000000000000000000000000000000 发生截断
六.数据的存储,是以字节为单位(8byte)
ps:图中为大端字节序(具体见相关知识点)
七.大小端介绍
1.大端(存储)模式,是指数据的高字节位保存在内存的低地址处,低位同理。
2.小端(存储)模式,是指数据的高字节位保存在内存的高地址处,高位同理。
八.进制位
16进制位依次是0~15(0~9 a b c d e f)
0x是16进制位的标识
一个16进制位表示4个二进制位,两个16进制位为1个字节
两道例题体会“整型提升”“数据的截断”:
考察点:
整型提升(有符号:符号位提升; 无符号unsigned:高位补0)
数据的截断(超出该数据类型的范围时)
例题1
例题2