lalala

lalala # C语言Day01 基础数据类型完整学习笔记 ## 一、程序运行底层原理 ### 1. 程序执行流程 1. 源码文件、编译后的二进制可执行文件统一存储在**外存**硬盘 2. 执行程序时操作系统将二进制代码加载到**内存**CPU读取内存指令完成逻辑运算 3. 程序运行结束系统回收内存中的代码与运行空间。 ### 2. 计算机存储单位换算 计算机底层仅识别二进制0/1存储单位递进关系 - 1 bit位最小存储单元存单个0/1 - 1 byte字节 8 bit - 1 KB 1024 Byte - 1 MB 1024 KB - 1 GB 1024 MB - 1 TB 1024 GB ### 3. 进制转换规则 #### 各进制基础 1. 二进制逢二进一仅数字0、1 2. 八进制逢八进一数字0~7 3. 十进制逢十进一数字0~9日常计算默认 4. 十六进制逢十六进一数字0~9、字母a~f #### 转换通用方法 1. **二/八/十六进制 → 十进制**每一位数字 × 当前位权值累加求和 2. **十进制 → 二/八/十六进制**十进制数反复除以目标进制将余数逆序排列 3. **二进制 ↔ 八进制**3位二进制对应1位八进制 4. **二进制 ↔ 十六进制**4位二进制对应1位十六进制 --- ## 二、C语言数据类型总览 数据类型用来定义数据的存储特性分为两大类 1. **基本数据类型**语言内置开箱即用 - 整型short / int / long - 浮点型float / double - 字符型char - 逻辑型boolC99标准 - 缺省空类型void 2. **构造数据类型**开发者自定义数组、结构体、联合体等后续学习 ### 1. 整型家族存储整数 #### 1short 短整型 - 占用内存2字节 - 分类signed short默认有符号、unsigned short无符号 - 符号规则有符号最高位为符号位0正1负数据按补码存储无符号全部bit存数值 - 取值范围 - 无符号0 ~ 65535 - 有符号-32768 ~ 32767 #### 2int 基本整型最常用 - 占用内存4字节 - 分类signed int默认、unsigned int - 取值范围 - 无符号0 ~ 4294967295约42亿 - 有符号-2147483648 ~ 2147483647约±21亿 #### 3long 长整型 - 占用内存8字节 - 分类signed long默认、unsigned long - 取值范围 - 无符号0 ~ 2^64 - 1 - 有符号-2^32 ~ 2^32 - 1 ### 2. 浮点型家族存储小数/实数 #### 1float 单精度浮点 - 占用内存4字节**全部为有符号** - 二进制存储结构1位符号位 8位指数位 23位尾数位 - 有效数字6~8位 #### 2double 双精度浮点默认小数类型 - 占用内存8字节**全部为有符号** - 二进制存储结构1位符号位 11位指数位 52位尾数位 - 有效数字12~16位精度远高于float ### 3. char 字符型 - 占用内存1字节 - 分类signed char默认、unsigned char - 取值范围 - 无符号0 ~ 255 - 有符号-128 ~ 127 - 底层原理通过**ASCII码**映射字符与数字 - 32号前为通信控制字符32号后为可打印字符 - 例A 对应ASCII码65二进制01000001 - 存储时本质保存数字打印时自动映射为字符 ### 4. bool 逻辑类型C99 - 值域true等价非0、false等价0 - C语言通用规则**非0数字全为真0为假** ### 5. void 空类型 无实际存储空间多用于函数无返回值、通用指针传参场景。 --- ## 三、常量与变量 ### 1. 常量程序运行中不可修改的值 #### 1整形常量 默认类型为signed int后缀区分类型 - 100普通int - 123Uunsigned int - 123Llong - 123ULunsigned long 进制标识 - 0123八进制 - 0x1a / 0X1F十六进制 #### 2浮点型常量 默认类型为double后缀区分精度 - 3.14 / 12.56e5double - 3.14F / 5.12ffloat 支持科学计数法13.98e-10、99.34E8 #### 3字符常量 使用单引号 包裹**仅允许单个字符**包含转义字符 - 普通字符a、5、! - 转义字符\n换行、\t制表符、\\反斜杠、\单引号、\0字符串结束符 - 进制字符\065八进制、\x41十六进制 #### 4字符串常量 双引号 包裹底层自动追加\0作为结束标记 - 例hello world - 区别a a \0和单个字符a不相等 #### 5宏定义常量 #define 语法#define 标识符 数值 示例#define PI 3.1415926 核心特性 1. 预处理阶段仅做**纯文本替换**不做任何数学运算 2. 宏表达式建议全部加括号规避运算符优先级bug 3. 作用消除魔法数字提升代码可读性。 ### 2. 变量程序运行中可修改的值 1. 定义规则数据类型 变量名 初始值; 2. 底层逻辑在内存中开辟对应类型大小的空间存储可修改数据。 --- ## 四、学习总结 1. 计算机一切数据以二进制存储进制转换是底层基础 2. C语言基础数据类型决定内存占用、取值范围、运算精度 3. 常量固定不可改变量支持动态修改宏定义是文本替换书写必须加括号 4. char本质是ASCII数字字符串末尾自带\0结束标记 5. 浮点默认double需要单精度float必须加后缀F/f。 ## 博客配套完整示例代码圆周长面积 c #includestdio.h #define PI (3.1415926) // 宏加括号规范写法 int main() { double r 5.0; double l, s; l 2 * PI * r; s PI * r * r; printf(r %lf\n, r); printf(l %lf\n, l); printf(s %lf\n, s); return 0; } ## 博客标签 #C语言 #C语言基础 #数据类型 #编程入门 #Linux gcc