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”,因此它可能是 ifif … 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 它是其中的一部分。