为什么选择语句允许使用;表达式语句?
Why selection-statement allows using of ; expression-statement?
它允许这样的构造:
if (0);
if (0); else;
为什么允许这样的结构?
语法的简化会是原因吗?
分号;
可以单独用作空语句
也就是说
if (0);
相当于
if (0)
{
// Empty
}
和
if (0); else;
相当于
if (0)
{
// Empty
}
else
{
// Also empty
}
空语句的一些示例用例是:
工作全部在封闭语句中完成:
// Count length of a string.
for (length = 0; buffer[length] != 0; ++length)
;
案例属于您希望在视觉上清楚其组织的组:
if (parameter < .3)
CorrectVeryLow();
else if (parameter < .9)
CorrectLow();
else if (parameter < 1.1)
;
else if (parameter < 1.7)
CorrectHigh();
else
CorrectVeryHigh();
这种情况是由预处理器选择引起的,其中有时有工作要做,有时没有:
#if FeatureTest
#define InitializeSpecialFeature SetupSpecialFeature()
#else
#define InitializeSpecialFeature
#endif
…
if (TimeToReset)
InitializeSpecialFeature;
这里没有发生任何不寻常或异常的事情,特别是没有“语法的简化”。这是完全一致的。这是什么构成“声明”的问题。语法是:
if( <expression> ) <statement> [else <statement>]
其中 <statement>
有多种形式:
statement:
labeled-statement
expression-statement
compound-statement
selection-statement
iteration-statement
jump-statement
但具体 expression-statement
是:
expression-statement:
expression(optional) ;
所以 ;
本身就是一个有效的 表达式语句 .
出于同样的原因,以下是一个有效且格式良好的 C 程序:
int main()
{
;;;;;;;;;;;;;
return 0 ;
}
它允许这样的构造:
if (0);
if (0); else;
为什么允许这样的结构?
语法的简化会是原因吗?
分号;
可以单独用作空语句
也就是说
if (0);
相当于
if (0)
{
// Empty
}
和
if (0); else;
相当于
if (0)
{
// Empty
}
else
{
// Also empty
}
空语句的一些示例用例是:
工作全部在封闭语句中完成:
// Count length of a string.
for (length = 0; buffer[length] != 0; ++length)
;
案例属于您希望在视觉上清楚其组织的组:
if (parameter < .3)
CorrectVeryLow();
else if (parameter < .9)
CorrectLow();
else if (parameter < 1.1)
;
else if (parameter < 1.7)
CorrectHigh();
else
CorrectVeryHigh();
这种情况是由预处理器选择引起的,其中有时有工作要做,有时没有:
#if FeatureTest
#define InitializeSpecialFeature SetupSpecialFeature()
#else
#define InitializeSpecialFeature
#endif
…
if (TimeToReset)
InitializeSpecialFeature;
这里没有发生任何不寻常或异常的事情,特别是没有“语法的简化”。这是完全一致的。这是什么构成“声明”的问题。语法是:
if( <expression> ) <statement> [else <statement>]
其中 <statement>
有多种形式:
statement:
labeled-statement
expression-statement
compound-statement
selection-statement
iteration-statement
jump-statement
但具体 expression-statement
是:
expression-statement:
expression(optional) ;
所以 ;
本身就是一个有效的 表达式语句 .
出于同样的原因,以下是一个有效且格式良好的 C 程序:
int main()
{
;;;;;;;;;;;;;
return 0 ;
}