语句与程序块
;分号为语句的结束符,{ }花括号把声明和语句括在一起构成复合语句(也叫做程序块),右边的花括号位程序块的结束符号,后面不用再加分号。
if-else语句
因为 if-else 语句的 else 部分是可选的,所以在嵌套的 if 语句中省略它的 else 部 分将导致歧义。解决的方法是将每个 else 与最近的前一个没有 else 配对的 if 进行匹配。
switch
break 语句将导致程序的执行立即从 switch 语句中退出。在 switch 语句中,case 的作用只是一个标号,因此,某个分支中的代码执行完后,程序将进入下一分支继续执行, 除非在程序中显式地跳转。跳出 switch 语句最常用的方法是使用 break 语句与return 语句
switch (表达式) {
case 常量表达式: 语句序列
case 常量表达式: 语句序列
default: 语句序列
}
while循环与for循环
逗号运算符“,”也是 C 语言优先级最低的运算符,在 for 语句中经常会用到它。被逗 号分隔的一对表达式将按照从左到右的顺序进行求值,表达式右边的操作数的类型和值即为 其结果的类型和值。这样,在 for 循环语句中,可以将多个表达式放在各个语句成分中,比 如同时处理两个循环控制变晕。我们可以通过下面的函数 reverse(s)来举例。该函数用于 倒置字符串 s 中各个字符的位置。
#include <string.h>
/* reverse: reverse string s in place */
void reverse(char s[]){
int c, i, j;
for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
某些情况下的逗号并不是逗号运算符,比如分隔函数参数的逗号,分隔声明中变量的逗号等, 这些逗号并不保证各表达式按从左至右的顺序求值。
do-while循环
C 语言中的第三种循环——do-while 循环则在循环体执行后测试终止条件, 这样循环体至少被执行一次
do
语句 while (表达式);
break语句与continue语句
break
break 语句可用于从 for、while与do-while等循环中提前退出,就如同从switch语句中提前退出一样。break 语句能使程序从 switch 语句或最内层循环中立即跳出。
continue
continue 语句与 break 语句是相关联的,但它没有 break 语句常用。continue 语 句用于使 for、while 或 do-while 语句开始下一次循环的执行。在 while 与 do-while 语句中,continue 语句的执行意味着立即执行测试部分;在 for 循环中,则意味着使控制 转移到递增循环变量部分。continue 语句只用于循环语句,不用于 switch 语句。某个循 环包含的 switch 语句中的 continue 语句,将导致进入下一次循环。
goto语句与标号
for ( ... )
for ( ... ) {
...
if (disaster)
goto error;
}
...
error:
大多数情况下,使用goto语句的程序段比不使用goto语句的程序段要难以理解和维护, 少数情况除外,尽管该问题并不太严重,但我们还是建议尽 可能少地使用 goto 语句。