C标准在哪里定义else if语句?
Where does the C standard define the else if statement?
我只是对 C 中的 else if
语句感到好奇,所以我查看了 C99 标准,但一无所获。然后我看了看语法,但还是没有 else if
selection_statement
: IF '(' expression ')' statement
| IF '(' expression ')' statement ELSE statement
| SWITCH '(' expression ')' statement
;
C中的else if
是怎么声明的。通过阅读标准,我怎么能注意到它是它的一部分?
C 2018 6.8.4 表示 selection-statement 可能是“if (
表达式 )
声明 else
声明”。 C 2018 6.8 表示后面的 statement 可能是“selection-statement”,因此它可能是 if
或 if … else
语句,结果是包含 else if
.
的语句
else if
语句正式定义为 §6.8.4/1 中 if
语句的副产品,C18 通过声明语法:
Syntax
1 selection-statement:
if ( expression ) statement
if ( expression ) statement else statement
Source: C18, §6.8.4/1
后一种形式的最后一个“语句”描述了在else
.
之后可以跟另一个if
语句
除此之外,您当然可以在 G.5.1/8 的代码示例中的规范附录 G 中找到它在 C 标准中的使用示例 non-normative:
if (isnan(x) && isnan(y)) { ... }
else if ((isinf(a) ||isinf(b)) && isfinite(c) && isfinite(d)) { ... }
else if ((logbw == INFINITY) && isfinite(a) && isfinite(b)) { ... }
这是 C18 标准中唯一出现 else if
语句的地方。
所以关于:
By reading the standard, how can I notice it is part of it?
至少有,虽然例子是 non-normative 它是其中的一部分。
我只是对 C 中的 else if
语句感到好奇,所以我查看了 C99 标准,但一无所获。然后我看了看语法,但还是没有 else if
selection_statement
: IF '(' expression ')' statement
| IF '(' expression ')' statement ELSE statement
| SWITCH '(' expression ')' statement
;
C中的else if
是怎么声明的。通过阅读标准,我怎么能注意到它是它的一部分?
C 2018 6.8.4 表示 selection-statement 可能是“if (
表达式 )
声明 else
声明”。 C 2018 6.8 表示后面的 statement 可能是“selection-statement”,因此它可能是 if
或 if … else
语句,结果是包含 else if
.
else if
语句正式定义为 §6.8.4/1 中 if
语句的副产品,C18 通过声明语法:
Syntax
1 selection-statement:
if ( expression ) statement
if ( expression ) statement else statement
Source: C18, §6.8.4/1
后一种形式的最后一个“语句”描述了在else
.
if
语句
除此之外,您当然可以在 G.5.1/8 的代码示例中的规范附录 G 中找到它在 C 标准中的使用示例 non-normative:
if (isnan(x) && isnan(y)) { ... }
else if ((isinf(a) ||isinf(b)) && isfinite(c) && isfinite(d)) { ... }
else if ((logbw == INFINITY) && isfinite(a) && isfinite(b)) { ... }
这是 C18 标准中唯一出现 else if
语句的地方。
所以关于:
By reading the standard, how can I notice it is part of it?
至少有,虽然例子是 non-normative 它是其中的一部分。