内容正文:
身高体型判定系统的数据处理(2.运算符与表达式)
C语言程序设计
-第4课时-
高教版第2版
学习目标
知识目标
理解并掌握算术、自增自减、赋值、逗号运算符的使用规则。
深入理解隐式与显式转换规则,掌握其在混合运算中的应用。
熟练使用 sizeof 运算符,获取数据类型或变量的存储空间大小。
技能目标
能灵活运用各类运算符组合复杂表达式,对数据进行准确的加工计算与处理。
具备排查能力,能识别并解决混合运算中可能出现的精度丢失或数据溢出问题。
素质目标
通过分析复杂表达式的运算优先级与结果,锻炼严谨的逻辑推理与分析能力。
将理论知识转化为实际代码编写技能,为后续复杂程序设计打下坚实基础。
教学导入
在编程世界里,我们如何让计算机执行计算?
思考:C 语言为我们提供了哪些基础运算符,来实现对数据的各种操作与计算?
知识讲授
运算符
▍ 定义
一种特殊的符号,用于表示对一个或多个操作数(Operand)进行特定的数学或逻辑运算,是构成表达式的基本元素。
▍ 常见示例
+ - * / =(加减乘除、赋值等基础算术与逻辑符号)
目录
运算符概述
算术与自增自减运算
赋值运算
逗号、强制类型转换与长度运算
运算符概述
第一部分
知识讲授
运算符概述
知识讲授
基本运算符
运算符是程序的“动词”,告诉编译器执行特定数学或逻辑操作。根据操作数数量可分为三类:算术运算符、关系运算符、赋值运算符。
知识讲授
运算符分类
在C语言中,运算符根据操作数的数量分为单目运算符、双目运算符和三目运算符。
知识讲授
基本运算符的代码实现
最终效果:
知识讲授
运算符优先级
如何理解优先级,就是先计算高优先级的运算符,如果优先级一样,看结合性是从左到右,还是右到左的;
算术运算符 > 关系运算符 > 赋值运算符
背诵记忆
序号 核心概念 核心说明与记忆要点
1 运算符 表示运算的符号,是程序的“动词”。记定义
2 种类 C语言运算符种类繁多,包括算术、关系、逻辑、赋值、位运算等。记主要类型
3 重要性 用于对数据进行加工运算,是构建程序逻辑、实现数据处理的核心工具。记作用
课堂练习
简答题
【问题】C 语言提供了哪些类型的运算符?
这道题主要考察对 C 语言运算符体系的整体认知,是理解 C 语言语法基础的重要前提。
【答案】
C语言提供了丰富的运算符,主要包括:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、自增自减运算符、条件运算符、逗号运算符、指针运算符、求字节数运算符(`sizeof`)、强制类型转换运算符等。
【解析】
虽然我们不需要一次性死记硬背所有类型,但了解其多样性有助于理解C语言强大的表达能力。在后续的编程实践中,我们将重点深入学习其中最常用的算术、关系、逻辑及赋值运算符。
算术与自增自减运算
第二部分
知识讲授
算术与自增自减运算
知识讲授
算术运算符与运算规则
▍常用算术运算符速查
运算符
名称
示例
结果/说明
+
加法
5 + 3
8
-
减法
5 - 3
2
乘法
5 * 3
15
/
除法
5.0 / 2
2.5 (浮点)
%
求余
5 % 2
1 (余数)
▍核心运算规则详解
整数除法规则
若两个操作数均为整数,结果只保留整数部分,小数部分被直接舍弃(截断)。
求余运算 (%) 限制
该运算符要求两个操作数必须都是整数类型。若包含浮点数,会导致语法错误。
混合类型自动转换
当整数与浮点数混合运算时,整数会被自动提升为浮点数,最终结果为浮点型。
算术运算符与运算规则
知识讲授
自增(++)与自减(--)运算符
前置形式
++变量 (如: ++i)
执行逻辑:先将变量的值加 1,更新后,再使用新值参与后续运算。
--变量 (如: --i)
执行逻辑:先将变量的值减 1,更新后,再使用新值参与后续运算。
口诀:先自变,后使用
后置形式
变量++ (如: i++)
执行逻辑:先使用变量的原始值参与运算,运算结束后,再将变量的值加 1。
变量-- (如: i--)
执行逻辑:先使用变量的原始值参与运算,运算结束后,再将变量的值减 1。
口诀:先使用,后自变
运算实例
算术运算实例:整数与浮点对比
#include <stdio.h>
int main() {
int a = 10, b = 3; float c = 3.0;
printf("a+b=%d
", a+b); // 结果: 13
printf("a/b=%d
", a/b); // 结果: 3 (整数除)
printf("a/c=%.2f
", a/c); // 结果: 3.33 (浮点除)
printf("a%%b=%d
", a%b); // 结果: 1 (求余)
return 0;
}
自增运算实例:前置 (++x) vs 后置 (y++)
#include <stdio.h>
int main() {
int x = 5, y = 5, r1, r2;
r1 = ++x; // 先加后用: x=6, r1=6
printf("r1=%d, x=%d
", r1, x);
r2 = y++; // 先用后加: y=6, r2=5
printf("r2=%d, y=%d
", r2, y);
return 0;
}
背诵记忆
序号 核心概念名称 核心说明与记忆要点
01 算术运算符 符号:+ - * / %
记忆:重点掌握整数除法的取整规则和求余运算的应用场景。
02 自增自减 (++/--) 核心:区分前置与后置的执行时机。
口诀:前置“先变后用”,后置“先用后变”。
03 运算代码实例 方法:结合实际代码示例运行理解。
要求:熟记典型代码的执行步骤与最终输出结果,加深感性认识。
04 易错点与注意 陷阱:整数除法的截断特性、求余操作数的限制。
警惕:自增自减在表达式中可能产生的副作用,避免复杂嵌套。
课堂练习
例题 :自增运算符的应用
【问题】已知变量初始值 `int a = 3;`,分别执行以下两行代码,输出结果分别是什么?执行完后变量 `a` 的值分别是多少?
1. printf("%d", a++);
2. printf("%d", ++a);
【答案】
① `a++`:先输出当前值3,随后 `a` 自增为4
② `++a`:先将 `a` 自增为4,再输出新值4
【核心解析】
这是考察自增运算符“前置”与“后置”的经典场景。口诀:后置(a++)先“使用”值,后自增;前置(++a)先自增,后“使用”值。
赋值运算
第三部分
知识讲授
赋值运算
知识讲授
基本赋值运算符
规则一:左侧必须是“左值”
规则二:赋值操作具有“值”,支持嵌套
知识讲授
赋值表达式
由赋值运算符(=)连接起来的式子。它不仅是一个“动作”,更是一个有返回值的“表达式”。
① 计算右侧表达式的值 → ② 将值赋给左侧变量 → ③ 整个赋值表达式的结果 = 刚刚赋给变量的值
运算实例
知识点背诵
序号 核心概念 核心说明与记忆要点
01 赋值运算符 符号为`=`,作用是将右侧值赋给左侧。【记忆】必须严格遵守规则:左边必须是变量,不能是常量或表达式。
02 复合赋值运算 包含`+=`, `-=`, `*=`, `/=`等。【记忆】它是a = a op b的简写形式,重点记忆其构成逻辑与简化代码的用途。
03 赋值表达式 格式为`变量 = 表达式`。【记忆】严格遵循计算顺序:先计算右边表达式的值,再将结果赋值给左边变量,且整个表达式本身也具有返回值。
课堂练习
例题 1
【问题】赋值运算符左边可以是表达式吗?为什么?
【答案】不可以。赋值运算符的左侧必须是一个可修改的左值(lvalue),通常是变量名。而表达式是计算结果,属于右值(rvalue),无固定内存地址,因此无法被赋值。
【解析】例如代码 `a + b = 10;` 是错误的。因为 `a + b` 是一个表达式,它的值是临时的计算结果,你无法将 10 再“存储”回这个临时的计算过程中,只有变量才有明确的内存空间可以接收赋值。
逗号、强制类型转换
与长度运算
第四部分
知识讲授
逗号、强制类型转换与长度运算
知识讲授
逗号表达式
📌 核心定义
一种“打包”运算符,用于将多个独立的表达式连接成一个整体(逗号表达式),通常用于简化代码书写。
⚙️ 关键运算规则
①顺序执行:从左至右依次计算每一个子表达式的值。
②结果取尾:整个逗号表达式的最终值等于最后一个子表达式的值。
③极低优先级:优先级在所有C语言运算符中排最低。
💻 代码示例与执行过程
inta, b, c, res;// 定义变量
res = (a=3, b=5, c=a+b);// 逗号表达式赋值
printf("res = %d", res);// 输出结果
执行:先算 a=3,再算 b=5,最后算 c=8。
结果:整个表达式的值为最后一步的 c,故 res =8。
知识讲授
强制类型转换运算符
知识讲授
自动类型转换(隐式转换)
知识讲授
sizeof 运算符
📌 核心作用
计算数据类型、变量或表达式结果在内存中所占的字节数。它是一个编译时运算符,结果在编译阶段确定。
知识点背诵
序号 核心概念名称 核心说明与记忆要点
01 逗号运算符 用“,”连接多个表达式,最终值为最后一个表达式的值。重点记忆:运算规则 & 极低优先级
02 强制类型转换 语法形式:(目标类型) 表达式。会产生一个指定类型的中间值。重点记忆:转换形式 & 不改变原变量值
03 自动类型转换 混合运算时由编译器自动触发。重点记忆:转换方向(向更高精度/范围类型) & 基本数据类型的转换层级
04 sizeof 运算符 计算数据类型或变量在内存中所占的字节数。重点记忆:核心作用 & 两种使用形式(sizeof(类型) / sizeof(变量))
05 记忆口诀总结 “逗号取最后,强制不改变原值,自动向高转,sizeof算大小”。重点记忆:通过口诀串联所有核心概念
随堂练习
📝 检测题 01:逗号表达式求值
问题:逗号表达式 `(x=1, y=2, x+y)` 的值是多少?执行后 `x` 和 `y` 的值分别是多少?
答案:表达式值为3;执行后 x =1,y =2。(逗号表达式取最后一项的值)
📝 检测题 02:强制类型转换特性
问题:执行 `int a = 5; double b = (double)a;` 后,变量 `a` 的类型和值改变了吗?
答案:没有改变。a 仍是 int 类型,值为 5。强制转换仅生成临时值赋值给新变量。
师生互动
师生互动
1
在实际编程开发过程中,如何根据具体场景合理运用各种运算符进行数据运算,以及如何权衡自动与强制类型转换?
知识点总结
课后任务
布置作业:
基础题:绘制本节课所学运算符和类型转换的思维导图,理清知识点之间的关系,巩固记忆。
拓展题:小组合作,设计一个简单的C语言计算器程序,要求支持加、减、乘、除、取余五种运算,必须用到本节课所学的不同类型运算符和类型转换,下节课分组展示成果。
谢谢观看
THANKS
Lavf59.14.100
Lavf59.14.100
Lavf59.14.100
Lavf59.14.100
$