C语言的表达式和语句(一)

109 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 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+62
c=3+811
5>31
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是一条完整的指令,但是它只是语句的一部分。因为一条完整的指令不一定是一条语句,所以分号用于识别简单语句这种情况。