预计阅读本页时间:-
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语句之后。
形式
例子