分号的使用
根据ISO/IEC 9899:2018标准第6.4.6 Punctuators节,分号(;)属于标点符号的范畴。关于标点符号,标准的定义原文是:A punctuator is a symbol that has independent syntactic and semantic significance.;即标点符号是具有独立语法和语义的符号。C语言中分号主要用作语句终止符。
根据ISO/IEC 9899:2018标准第6.8 Statements and blocks节,C语言中的语句包括:标签语句(labeled-statement)、复合语句(compound-statement)、表达式语句(expression-statement)、选择语句(selection-statement)、迭代语句(iteration-statement)、跳转语句(jump-statement),各语句的语法格式分别如下所示:
- 标签语句
identifier : statement case constant-expression : statement default : statement
- 复合语句
{ block-item-listopt }
- 表达式语句
expressionopt ;
- 选择语句
if( expression ) statement if( expression ) statement else statement switch( expression ) statement
- 迭代语句
while( expression ) statement do statement while( expression ) ; for( expressionopt ; expressionopt ; expressionopt) statement for( declaration expressionopt ; expressionopt ) statement
- 跳转语句
goto identifier ; continue ; break ; return expressionopt ;
其中表达式语句、迭代语句中的do语句、跳转语句终止时要使用分号表示语句终止;复合语句不需要使用分号表示语句终止;其它语句终止时有没有分号取决于statement的具体实现。
使用分号作为语句终止符可以告诉编译器:该语句到这来就结束了;例如:do语句结束时如果没有分号,编译器很可能将while解释为一个while语句的开始。