(四)语句
空语句
空语句本身只包含一个分号。它所适用的场合是语法要求出现一条完整的语句,但并不需要它执行任何任务。
表达式语句
C并不存在专门的“赋值语句”,赋值就是一种操作,就像加法和减法一样,就在表达式内进行。
例:
x = y + 3;
ch = getchar();
实际上是表达式语句,而不是赋值语句。
y + 3;
getchar();
这两条语句也完全合法,但它们并未使用赋值操作符。
a++;
这条语句并没有赋值操作符,但它却是一条非常合理的表达式语句。++操作符将增加变量a的值,这就是它的副作用。
代码块
代码块就是位于一对花括号之内的可选的声明和语句列表。它允许你在语法要求只出现一条语句的地方使用多条语句。
if语句
if( expression )
statement
else
statement
C并不具备布尔类型,而是用整型来代替。零值表示“假”,非零值表示“真”。
在没有边界的条件下,else子句从属于最靠近它的不完整的if语句。
goto语句
goto 语句标签;
要使用goto语句,你必须在你希望跳转的语句前面加上语句标签。语句标签就是标识符后面加个冒号。包含这些标签的goto语句可以出现在同一个函数中的任何位置。
goto是一种危险的语句:
i = 0;
outer_next:
if(i >= NUM_ELEMENTS - 1)
goto outer_end;
j = i + 1;
inner_next:
if(j >= NUM_ELEMENTS)
goto inner_end;
if(value[i] <= value[j])
goto no_swap;
temp = value[i];
value[i] = value[j];
value[j] = temp;
no_swap:
j += 1;
goto inner_next;
inner_end:
i += 1;
goto outer_next;
outer_end:
;
下面是一个功能相同的程序:
for(i = 0; i < NUM_ELEMENTS - 1; i += 1){
for(j = i + 1; j < NUM_ELEMENTS; j += 1){
if(value[i] > value[j]){
temp = value[i];
value[i] = value[j];
value[j] = temp;
}
}
}
但是,使用goto语句来跳出多层嵌套的循环可能非常合适。
while( condition1 ){
while( condition2 ){
while( condition3 ){
if(some disaster)
goto quit;
}
}
}
quit: ;