携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情
表达式
表达式由运算符和运算对象(运算对象是运算符操作的对象)组成。最简单的表达式是一个单独的运算对象,以此基础可以建立复杂的表达式。例如:
4
-6
4+21
a*(b+c/d)/20
q=5*2
x=++q%3
q>3
如你所见,运算对象可以是常量,变量或二者的组合。一些表达式由子表达式组成(子表达式即较小的表达式)。例如,c/d是上面例子中 a*(b+c/d)/20 的子表达式。
每个表达式都是一个值
C表达式的一个最重要的特性是,每个表达式都有一个值。要获得一个值,必须根据运算符优先级规定的顺序来执行操作。但是,有赋值运算符的表达式的值是什么呢?这些表达式的值与赋值运算符左侧变量的值相同。因此,表达式q=5 * 2作为一个整体的值是10.那么,q>3的值是多少?这种关系表达式的值不是0就是1,如果条件为真,表达式的值为1;如果条件为假,表达式的值为0.下面一些例子列出一些表达式及其值:
| 表达式 | 值 |
|---|---|
| -4+6 | 2 |
| c=3+8 | 11 |
| 5>3 | 1 |
| 6+(c=3+8) | 17 |
虽然最后一个例子不太符合咱们平时的习惯,但是它也是合法的(不建议用),因为它是两个子表达式的和,每个子表达式都有一个值。
语句
语句是C程序的基本构建块。一条语句相当于一条完整的计算机指令。在C语言中,大部分语句都以分号结尾。因此,legs=4只是一个表达式(它可以是较大表达式的一部分),这种legs=4; 代表是一条语句。
最简单的语句是空语句:
; //空语句
c把末尾加上一个分号的表达式都看作是一条语句(即表达式语句)。因此,像下面这样写也没问题;
8;
3+4;
但是,这些语句在程序中什么也不做,不算是真正有用的语句。确切的说,语句可以改变值或调用函数:
x=25;
++x;
y=sqrt(x);
虽然一条语句(或者至少是一条有用的语句)相当于一条完整的指令,但并不是所有的指令都是语句。考虑下面语句:
x=6+(y=5);
该语句中子表达式y=5是一条完整的指令,但是它只是语句的一部分。因为一条完整的指令不一定是一条语句,所以分号用于识别简单语句这种情况。