B.4 参考资料4:表达式、语句和程序流

B.4.1 总结:表达式和语句

在C中,表达式代表值,而语句代表给计算机的指令。

表达式

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

表达式由运算符和操作数组成。最简单的表达式只是一个不带运算符的常量或变量,例如22或beebop。复杂一些的例子是 55+22和vap=2*(vip+(vup=4))。

语句

语句是对计算机的命令。任何以分号结尾的表达式都是一个语句,它不一定要有意义。语句可以是简单语句或复合语句。简单语句(simple statement)以分号结尾,下面是一些例子:

 

 

声明语句 int toes;
赋值语句 toes = 12;
函数调用语句 printf(“% dn”,toes);
控制语句 while(toes < 20)toes = toes + 2;
空语句 :/*什么都不做 */

(从技术上说,C标准把声明归于它们自己的类别而不是把它们划为语句类别。)

复合语句(compound statement)或代码块(block)由用花括号括起来的一个或多个语句(它们本身也可以是复合语句)组成。下面的while语句就是一个例子:

阅读 ‧ 电子书库

B.4.2 总结:while语句

关键字

while语句的关键字是while。

总体注解

while语句创建一个循环,该循环在判断表达式为假(或0)之前重复执行。while语句是一个入口条件(entry-condition)循环,在进行一次循环之前决定是否要执行循环。因此有可能循环一次也不执行。循环的语句部分可以是一个简单语句或一个复合语句。

形式

阅读 ‧ 电子书库

在expression为假(或0)之前重复执行statement部分。

例子

阅读 ‧ 电子书库

B.4.3 总结:for语句

关键字

for语句的关键字是for。

总体注解

for语句使用由分号隔开的三个控制表达式来控制循环过程。初始化表达式只在开始执行循环语句之前执行一次。如果判断表达式为真(或非0)就执行一次循环。然后计算更新表达式并再次检查判断表达式的值。for语句是一个入口条件循环,在进行一次循环之前决定是否要执行循环,因此有可能循环一次也不执行。循环的语句部分可以是一个简单语句或一个复合语句。

形式

阅读 ‧ 电子书库

循环在test为假(或0)之前重复执行。

C99允许在初始化部分中包含一个声明。变量的作用域和持续时间被限制在for循环内。

例子

阅读 ‧ 电子书库

B.4.4 总结:do while语句

关键字

do while语句的关键字是do和while。

总体注解

do while语句创建一个循环,它在判断表达式为假(或0)之前重复执行。do while语句是一个退出条件循环,在执行一次循环之后才决定是否要再次执行循环,因此循环至少要被执行一次。循环的语句部分可以是一个简单语句或一个复合语句。

形式

阅读 ‧ 电子书库

在expression为假(或0)之前重复执行statement部分。

例子

阅读 ‧ 电子书库

B.4.5 总结:使用if语句进行选择

关键字

if语句的关键字是if和else。

总体注解

在以下的每种形式中,statement都可以是一个简单语句或一个复合语句。更一般地说,“真”表达式就是具有非零值的表达式。

形式1

阅读 ‧ 电子书库

阅读 ‧ 电子书库

如果expression为真则执行statement语句。

形式2

阅读 ‧ 电子书库

如果expression为真则执行statementl语句,否则执行statement2语句。

形式3

阅读 ‧ 电子书库

如果expression1为真则执行statement1语句,如果expression1为假但expression2为真则执行statement2语句,否则就执行statement3语句。

例子

阅读 ‧ 电子书库

B.4.6 总结:使用switch进行多项选择

关键字

switch语句的关键字是switch。

总体注解

程序控制跳转到以表达式产生的值为标签的语句处,然后程序流将通过剩下的语句,除非又被重定向。表达式和标签都必须是整数值(包括char类型),标签必须是常量或只由常量组成的表达式。如果没有标签与表达式的值相匹配,那么如果有default标签,控制就转到以default为标签的语句处执行,否则控制就到达switch语句之后的下一个语句。当控制到达一个特定的标签时,switch语句中后面的所有语句都要执行,除非到达switch语句的结尾或碰到了break语句。

形式

阅读 ‧ 电子书库

可以有两个以上带标签的语句,default可选。

例子

阅读 ‧ 电子书库

如果letter的值为‘a’或‘e’,就打印所有的三条消息;为‘c’或‘n’时只打印最后两条消息;为其他的值时只打印最后一条消息。

B.4.7 总结:程序跳转

关键字

程序跳转的关键字是break、continue和goto。

总体注解

这三条指令break、continue和goto使程序流从程序中的一个位置跳转到另一个位置。

break命令

break命令可以用在三种循环和switch语句中。它使程序控制跳过循环或switch语句中的剩余部分,继续执行循环或switch之后的命令。

例子

阅读 ‧ 电子书库

continue命令

continue命令可以用在三种循环中,但是不能用在switch语句中。它使程序控制跳过一次循环的剩余语句。对while和for循环来说会开始下一个循环周期,而对do while循环来说,要判断退出条件,如果必要的话才开始下一个循环周期。

例子

阅读 ‧ 电子书库

这段代码回显非空格字符并进行计数。

goto命令

goto语句使程序控制跳转到指定的标签处的语句。使用冒号来对标签和它后面的语句进行分隔。标签名遵循变量命名规则。带标签的语句可以在goto语句之前,也可以在goto语句之后。

形式

阅读 ‧ 电子书库

例子

阅读 ‧ 电子书库