数据的存储
1. 整形在内存中的存储和整形提升
整数在内存中存储的是补码
那为什么在内存中偏要存储补码呢?
比如 (1-1)
这里我们要解释
补码可以将符号位和数值域统一处理同时加法和减法也可以统一处理 (CPU只有加法处理器)还有 补码和原码,原码和补码转化的方式是一样的(都是取反+1),不需要额外的电路
因此在内存中存储补码可以方便运算
简述一下整形提升
一、
1234567891011121314151617181920212223242526//-1 的补码为//11111111111111111111111111111111char a = -1;//因为 a 为 char 类型,所以只能存一个字节(8bit) 即为//11111111//又因为打印的方式为 %d 即为整形方式打印 所以要整形提升//(因为为有符号类型,所以前面补1) 即为// 11111111111111111111111111111111 (补码)//转换为原码则为 10000000000000000000000000000001 (即为-1)signed char b = -1;//b为有符号字 ...
tips
1. 全局变量的作用域
全局变量的作用域就是整个工程
我们在同一工程但在不同的源文件这句话是否有误呢?
比如在源文件 test2.c 中我们创建一个全局变量 a = 10
但在不做声名的情况下我们却发现在test1.c中 a 并没有被创建
但是全局变量的作用域是整个工程这句话并没有错误
我们只需要在 test2.c 中声明即可
此时我们需要一个函数 extern 使用方法如下
2. 什么是常量
创建数组时我们需要为数组提供 创建量(必须为常量)
2.1 const
const在 * 前 , 修饰的是 *pconst在 * 后 , 修饰的是 p
const 只是将 a 从变量修饰成了常量,让其拥有了常属性,但其本质上还是一个变量
2.2 枚举常量
枚举常量即是可以一一列举的量
创建方法如下
1234567enum xxx{ a, //若不赋值默认为0 b, //向下逐一递增,b即默认为1 c = 100, //赋值之后即为100 d //逐一递增,默认为101}
...