5.4.1 表达式
- expression
- subexpression
每个表达式都有一个值
5.4.2 语句
- statement
- C 程序的基本构建块
- 一条语句相当于一条完整的计算机指令
legs = 4;
空语句:
;
表达式语句:
- 什么都不做
8;
3 + 4;
并不是所有的指令都是语句:
x = 6 + (y = 5);
常见语句:
- 声明注释表达式语句
- 去掉
;
后也不是表达式
其它语句:
- 赋值表达式语句
sum = sum + count;
- 函数表达式语句
- 引起函数调用
printf(xxx);
- 复合语句
{
xxx;
yyy;
}
- 结构化语句
- while
副作用和序列点
side effect
- 副作用是对数据对象或文件的修改
states = 50;
- 主作用: 对表达式求值
sequence point
- 程序执行的点
- 在该点上, 所有的副作用都在进入下一步之前发生
;
标记了一个序列点- 任何一个完整表达式的结束也是一个序列点
- 完整表达式 (full expression): 这个表达式不是另一个更大表达式的子表达式
- 有助于分析后缀递增何时发生
while (guests++ < 10)
printf("%d \n", guests);
在该代码中, guests 与10比较结束后, guests 的值+1, 而不是在 printf 执行后.
结合副作用和序列点来说明:
guests++ < 10
是一个完整表达式, 其主作用是guests < 10
, 副作用是guests++
, 在完整表达式结束之前进行副作用.
5.4.3 复合语句 (块)
compound statement
- 用花括号括起来的一条或多条语句
- 也成为块 (block)