C语言第二讲笔记(小白友好版)
欢迎继续学习C语言!这一讲我们将深入了解程序中的基本组成单元——表达式和语句,以及如何让程序根据不同情况做出判断(选择语句)。别担心,我们会用最通俗的方式讲解,并结合实际例子,让你轻松掌握。
一、学习建议:掌握方法比死记硬背更重要
- 会用为准:不需要把每个语法规则都背得滚瓜烂熟,重点是能写代码、能看懂代码。
- 善用工具:遇到问题多查资料、多问AI(比如我
),借助调试工具找BUG。 - 动手实践:光看不练假把式,每学一个新概念,马上敲代码试试。
二、Typora使用小技巧(写笔记必备)
如果你用Typora记笔记,记住:
- 一个
#表示一级标题,两个##是二级标题,以此类推。 - 可以用
-或*创建无序列表,1.创建有序列表。 - 代码块用三个反引号
包围,并注明语言(如 `c`)。
三、表达式与语句:程序的“单词”和“句子”
1. 什么是表达式?
表达式是由变量、常量和运算符组成的式子,每个表达式都会有一个计算结果(称为表达式的值)。
例如:
3 + 5→ 值为 8a = 10→ 值为 10(赋值表达式的结果就是赋的值)x > y→ 值为 1(真)或 0(假)
2. 什么是语句?
语句是C程序中的完整执行单元,以分号 ; 结尾。程序就是由一条条语句组成的。
例如:
int a;// 声明语句a = 10;// 赋值语句printf("Hello");// 函数调用语句;// 空语句,什么都不做
3. 表达式和语句的关系
- 表达式后面加上分号,就变成了语句。例如:
3 + 5;是一条语句,但这条语句没有实际作用(计算结果被丢弃)。 - 反过来,语句中往往包含表达式。例如
a = b + c;中,b + c是一个表达式。
| 对比项 | 表达式 | 语句 |
|---|---|---|
| 定义 | 运算符连接操作数形成的式子 | 以分号结尾的完整指令 |
| 特征 | 有值(计算结果) | 没有值,但会执行动作 |
| 例子 | 2 * 3,x > y |
x = 2 * 3;,if(x>y); |
一句话总结:表达式是“词”,语句是“句”。
四、选择语句:让程序会“思考”
1. if 语句的基本形式
if 语句根据条件决定是否执行某段代码。
if (条件) {
// 条件为真时执行的代码
}
条件可以是任何表达式,0 表示假,非 0 表示真(负数、正数都是真,只有 0 是假)。
例如:
int score = 85;
if (score >= 60) {
printf("及格了!");
}
2. if-else 语句
二选一:条件为真执行一块代码,否则执行另一块。
if (条件) {
// 真时执行
} else {
// 假时执行
}
例子:
if (score >= 60) {
printf("及格");
} else {
printf("不及格");
}
3. 级联 if-else if(多选一)
当有多个条件需要依次判断时,可以用 else if。
if (条件1) {
// 条件1为真
} else if (条件2) {
// 条件1为假且条件2为真
} else if (条件3) {
// 条件1、2为假且条件3为真
} else {
// 所有条件都为假
}
注意事项:
- 程序会从上往下依次检查条件,一旦遇到真条件,就执行对应的代码块,然后跳出整个 if 链(后面的条件不再检查)。
else是可选的,放在最后处理“其他情况”。
例子(成绩等级):
if (score >= 90) {
printf("优秀");
} else if (score >= 75) {
printf("良好");
} else if (score >= 60) {
printf("及格");
} else {
printf("不及格");
}
4. 条件运算符(三元运算符)
一种简写形式,适用于简单的二选一赋值:
变量 = 条件 ? 表达式1 : 表达式2;
如果条件为真,整个表达式的值为表达式1,否则为表达式2。
例如:
int max = (a > b) ? a : b; // 把 a 和 b 中较大的值赋给 max
5. switch 语句:多分支利器
当条件是一个变量或表达式,且需要根据它的不同值执行不同操作时,switch 比级联 if 更清晰。
基本结构:
switch (表达式) {
case 常量1:
// 当表达式的值 == 常量1 时执行
break;
case 常量2:
// 当表达式的值 == 常量2 时执行
break;
...
default:
// 如果所有 case 都不匹配,执行这里(可选)
}
重要规则:
case后面必须是整型常量(如整数、字符),不能是变量。- 每个
case最后一般要加break;,否则会“穿透”到下一个 case(即继续执行后面的代码,直到遇到 break 或 switch 结束)。 default可以放在任何位置,习惯放最后。
示例:根据分数输出等级(假设分数为整数 0~10)
switch (score) {
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
printf("不合格");
break;
case 6:
printf("合格");
break;
case 7:
case 8:
case 9:
printf("优秀");
break;
case 10:
printf("满分");
break;
default:
printf("输入错误");
}
| 分数范围 | 输出 |
|---|---|
| 0~5 | 不合格 |
| 6 | 合格 |
| 7~9 | 优秀 |
| 10 | 满分 |
| 其他 | 输入错误 |
6. 条件判断中的真假
- 假:整数 0
- 真:任何非 0 的值(包括负数、小数、字符等)
所以下面这种写法是合法的:
int a = 5;
if (a) { // 等价于 if (a != 0)
printf("a 不为 0");
}
五、补充:布尔类型 _Bool
C语言有一种专门表示真假的类型:_Bool(或包含头文件 <stdbool.h> 后可用 bool)。
- 变量取值只能是 0 或 1。
- 如果给
_Bool变量赋一个非 0 值,它会自动变成 1。
#include <stdbool.h>
bool flag = true; // true 是 1,false 是 0
_Bool a = 5; // a 实际被存为 1
六、小结一下
- 表达式是计算值的式子,语句是程序执行的动作。
- 选择语句让程序能根据不同情况执行不同代码。
if、if-else、else if适用于范围判断。switch适用于离散的多个相等值判断。- 条件运算符
?:适合简单二选一赋值。
- 条件判断中,0 为假,非 0 为真。
- 可以用
_Bool类型专门存储真/假值。
多练习、多写代码,这些概念很快就会成为你的肌肉记忆!如果还有疑问,随时可以问AI或查资料,加油!