1
C语言程序设计
1.4.8.3 3.8.3 goto 语句

3.8.3 goto 语句

goto语句是无条件转移语句。goto语句的一般形式为:

img296

在goto语句中,必须给出语句标号,标号是按标识符取名规则取名的标识符。执行goto语句后,使控制无条件转向标号指定的语句处开始往下执行。

结构化程序设计不提倡使用goto语句,因为大量使用goto语句会使程序结构复杂化,降低程序的可理解性和可维护性。但在特殊情况下,特别是从深层嵌套循环中跳出时,用goto语句则比break语句简便得多。例如:

img297

如果不用goto语句,则需要把以上程序段改为:

while(a〉'0')

img298

这种方式需要多加几个判别语句。

使用goto语句时注意:

(1)goto语句只能从循环嵌套内层转向外层,反之则不行。

(2)标号所在行的语句可以是一个空语句,例如:

  next: ;

空语句使得插入标号很方便。

常见的编程错误3.4

img299 在switch语句中需要的地方忘记了break语句,会造成逻辑错误;在switch语句中,如果在单词case与被测试的整数值之间遗漏了空格的话,会引起逻辑错误。例如,将case 3写成case3。

img300 在switch语句的case项中指定包含变量的表达式。

img301 在switch语句中,如果提供相同的case项,则产生一个编译错误。

良好的编程习惯3.3

img302 最好在switch语句中提供默认情况。

img303 默认情况语句列在switch语句的最后,表明在所有case项都不能匹配的情况下使用。该语句实际上可以不需要break语句,但为了使程序清晰以及与其他case项相对称,也可以使用break语句。

img304 尽量少用或不用goto 语句。