顺序结构
拆解每条语句的执行时序与隐藏细节,看穿程序的线性骨架
按 空格/→ 演示下一步
全部页面点击任意一页,跳回舞台从这页播放
顺序结构
拆解每条语句的执行时序与隐藏细节,看穿程序的线性骨架
语句与表达式
上页我们说顺序结构是一句接一句往下执行——那句到底是什么?程序里最小颗粒其实是两类东西:语句和表达式。这页把它们拆开讲。
配料比算出数值,步骤完成动作;一行只写30克糖既是值也是动作,对应表达式语句
算术运算
上一节把表达式拆成「操作数 + 操作符 + 操作数」。这一页聚焦操作符里的算术运算——计算机拿到 '3 + 4 * 2' 先算什么不是随意的,有严格的优先级规则在管。
菜谱写「先炒肉再放盐」,你不能倒过来——优先级就是这种「哪步先做」的硬规则
赋值运算
算术运算算出了结果,这些结果得有个地方放——赋值就是负责把值存进变量的动作。
柜子是变量名,包裹是值,赋值就是把新包裹放进标签下的柜子
位运算
赋值运算让变量拥有了一个整数值——而这个值的底层其实是 0 和 1 排成的比特串。直接在比特层面操作的运算,就是位运算。
每个开关独立控制一盏灯:&要求全开才亮,|只要一个开就亮,^是状态翻转
增量运算和逗号运算
排队叫号时,你既可能想知道'当前叫到几号'(旧值),也可能想知道'下一个该几号'(新值)。增量运算和逗号运算就是 C 语言里处理这类'顺手做一件事'的小工具。
显示当前号=后缀(取旧值);显示下一号=前缀(取新值);号本身都已变化
数据输出
你算出一组数据想给别人看——总不能把内存地址念出来吧?需要一位「翻译官」,把二进制翻译成人类能读的数字、文字。这件事在 C 里靠 printf 完成。
模板格式固定(菜名/单价/数量各占一列),实际内容随订单填入
数据输入
上一页讲了数据输出,是把变量里的值「发出去」。反过来,要让程序处理数据,首先得把数据「收进来」——这一步就靠数据输入。
包裹(输入)按快递单(格式串)分拣到货架(变量地址),货架上必须有位置(&)
二级C考点解析之运算符及
做数学题我们默认先乘除后加减,但 C 表达式里混着算术、关系、逻辑、赋值多种运算符时,谁先算、按什么方向算,直接决定结果。本页把决定运算顺序的'交通规则'一次讲透。
先乘除后加减≈优先级;从左读到右≈大部分运算的结合方向;赋值反向写所以从右往左
二级C考点解析之数据输入
上一页把 scanf 的基本骨架过了一遍。这页专攻二级 C 笔试和上机里最爱设套的几个坑——& 加不加、%c 的回车去哪了、返回值到底返回的是什么。
格式串是货品清单,&变量是门牌号,scanf 按清单把对应类型的数据送到指定房间
本节要点
- ✓顺序结构是默认执行模型,所有控制结构都建立在此之上
- ✓表达式求值三要素:优先级、结合性、副作用顺序
- ✓位运算仅适用于整型,有符号数右移是实现定义行为
- ✓scanf返回值用于检测匹配失败,是健壮输入的关键
- ✓考点高频陷阱:赋值与比较混淆、i++与++i、逗号表达式值
课后思考
先盖住答案,自己想 30 秒再看。三个问题对应三种深度:精确理解、边界踩坑、概念辨析。
参考答案提示路径:先区分'语句间顺序'与'表达式内部求值顺序'。顺序结构保证前者(控制流无跳转),后者由运算符优先级决定。`2+3*4` 中 `*` 优先级高,`+` 写在前面也无效——这就是时间差的来源。
参考答案提示:这不是顺序结构的问题,而是表达式求值的灰色地带。C 标准未规定同一变量在同一表达式中多次修改的求值顺序——属于未定义行为(UB)。语句间顺序依然确定,问题出在表达式内副作用的交织。
参考答案思考方向:逗号表达式是一个表达式,从左到右严格求值并返回最后一项;三条独立语句仅保证语句间顺序。颗粒度不同——逗号是表达式内子句,语句是顶层颗粒。涉及副作用时行为可能分裂。