文章目录
- 前言
- 一、C 语言变量核心知识点
- 1. 变量定义概念
- 2. 变量命名规范
- 3. 不同类型变量定义格式
- 4. 初始化与赋值区别
- 二、表达式与数据类型转换
- 1. 表达式基础定义
- 2. 混合运算自动转换规则
- 3. 两种类型转换方式
- 4. 赋值时数据截断 / 扩展规则
- 三、C 语言全部常用运算符详解
- 1. 算术运算符
- 2. 赋值运算符
- 3. 逗号运算符
- 4. sizeof 运算符
- 5. 运算符优先级(从高到低)
- 四、标准输入输出函数(stdio.h)
- 1. 必备头文件
- 2. 字符IO函数:putchar /getchar
- 3. 格式化 IO 与字符串 IO
- 总结
- 1. 今日掌握核心内容
- 2. 学习难点梳理
前言
前两日学习了 Linux 基础操作、gcc 编译流程与 C 语言基础数据类型,今天从变量知识点开始,完整学习变量规范、表达式运算、隐式 / 强制类型转换、全部常用运算符,以及 stdio 库下字符输入输出函数,本篇整理全部学习内容与个人学习总结。
一、C 语言变量核心知识点
1. 变量定义概念
变量是程序运行过程中值可以发生改变的量,程序运行时会在内存中开辟专属存储空间,通过变量名读写内部数据;变量必须先定义,后使用。
2. 变量命名规范
1)变量名仅支持字母、数字、下划线,存在硬性约束:不能以数字开头;
2)禁止和 C 语言关键字重名,尽量不与库函数重名(如printf不建议作为变量名);
3)推荐见名知意,两种主流命名风格:
驼峰命名:TempVal、MaxNum
Linux 下划线命名:temp_val、avg_score
3. 不同类型变量定义格式
// 整型变量 short var;unsigned short var;int var;unsigned int var;long var;unsigned long var;// 浮点型变量 float var;double var;// 字符型变量 char var;unsigned char var;// 布尔变量(需引入头文件stdbool.h)#include <stdbool.h>bool var;4. 初始化与赋值区别
1)初始化:定义变量时直接赋予初始值(推荐所有变量初始化,避免随机垃圾值)
intnum=10;2)赋值:变量定义完成后,通过=修改存储空间内数据
intnum;num=10;重要注意:未初始化的变量内存中是随机值,业务代码严禁直接使用。
二、表达式与数据类型转换
1. 表达式基础定义
由常量、变量通过运算符连接组成的式子,所有表达式同时具备值和数据类型两个属性。
2. 混合运算自动转换规则
运算时两端数据类型不一致,低精度类型会自动转为高精度统一运算:
1)char/short参与运算自动提升为int;
2)float参与运算自动提升为double;
3)精度优先级从高到低:
double>float>unsigned long>long>unsigned int>int>char/short4)同字节长度下:无符号类型精度高于有符号类型。
3. 两种类型转换方式
1)隐式转换:混合运算、赋值时系统自动完成,无需手动书写;
2)强制(显式)转换:手动指定目标类型,格式(数据类型)变量/表达式
inta=20;doubleb=(double)a;4. 赋值时数据截断 / 扩展规则
1)整型赋值浮点:扩展精度,小数位补 0;
2)浮点赋值整型:直接舍弃小数点后所有数据;
3)有符号、无符号互赋:直接拷贝内存二进制,不做数值换算;
4)小数存入大空间:有符号数扩展符号位,无符号数补 0;
5)大数存入小空间:仅保留二进制低位,可能出现正负翻转。
三、C 语言全部常用运算符详解
1. 算术运算符
符号:+ - * / % ++ --核心关键点:%取余运算符仅支持整数,浮点数不能使用;
后置自增i++:先使用原值,运算结束后自增 1;
前置自增++i:变量先自增 1,再使用新值;++/--只能作用于变量,常量不支持。
2. 赋值运算符
基础赋值:=;复合赋值:+= -= *= /= %=
左值:等号左侧只能是变量(可修改内存),常量、表达式不能作为左值;
右值:变量、常量、运算表达式均可放在等号右侧。
3. 逗号运算符
语法:(表达式1,表达式2,表达式3)
执行逻辑:从左到右依次执行所有表达式,整个逗号表达式最终结果等于最后一个表达式的值。
4. sizeof 运算符
作用:计算变量 / 数据类型在内存中占用的字节数;
inta=0;sizeof(int);// 获取int类型字节大小sizeof(a);// 获取变量a字节大小5. 运算符优先级(从高到低)
括号 > 单目运算符 > 双目运算符 > 三目运算符 > 赋值运算符 > 逗号运算符
双目内部细分优先级:算数 > 移位 > 关系 > 位运算 > 逻辑
四、标准输入输出函数(stdio.h)
1. 必备头文件
所有输入输出函数必须引入标准 头文件
#include<stdio.h>2. 字符IO函数:putchar /getchar
putchar()
功能:终端输出单个字符;
参数:字符常量、字符变量、ASCII 数字均可;
返回值:输出字符对应的 ASCII 码(int 类型);
限制:单次只能输出一个字符。
getchar()
功能:从键盘读取单个输入字符。
3. 格式化 IO 与字符串 IO
格式化:printf()格式化输出、scanf()格式化输入;
字符串:gets()读取一行字符串、puts()输出字符串并自动换行。
总结
1. 今日掌握核心内容
1)吃透 C 语言变量完整规范:命名、定义、初始化,理解未初始化变量的风险;
2)掌握混合运算隐式转换、强制类型转换两种转换方式与精度升降规则;
3)熟练区分算术、赋值、逗号、sizeof 运算符用法,分清前置 / 后置自增差异;
4)熟记运算符优先级,能判断复杂表达式执行顺序;
5)掌握putchar、getchar底层字符输入输出,理解基础字符交互逻辑。
2. 学习难点梳理
1)自增、自减运算符极易出错前置++i和后置i++执行顺序完全不同,在复合表达式、循环里混用很容易算错结果。
二者核心区别是 “先计算再使用” 还是 “先使用再计算”,如果不单独拆分代码测试,很容易混淆逻辑,写出不符合预期的代码。
2)putchar 的使用逻辑初期难以理解刚开始学习时产生疑惑:putchar 定义是输出字符,但直接传入数字(ASCII 码)也能在终端打印出对应文字。一开始没有把字符和 ASCII 码绑定理解,不清楚计算机底层存储字符本质是数字,导致无法理解为什么数字参数能输出字符,经过多次实操才理清底层原理。