在 C 中,我可以执行以下操作:
int main()
{
printf("HELLO WORLD");;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
}
而且有效!这是为什么?
我个人的想法:分号是一个 NO OPERATION(来自维基百科)指示器,拥有一大串分号与拥有一个分号并告诉 C 语句已结束的想法相同。
最佳答案
一个分号终止一条语句...连续的分号表示无操作语句(如您所说)。考虑:
while (x[i++] = y[j++])
;
这里,所有的工作都是在循环测试条件下完成的,所以空语句是可取的。但是,即使没有控制循环,也允许空语句。
为什么?
好吧,预处理器的许多用途可能会扩展到一些实际的 C 代码,或者根据一些早期的定义被删除,但是给定...
MY_MACRO1();
MY_MACRO2();
...预处理器只能替换 MY_MACROX()
文本,将尾随分号留在那里,可能在空语句之后。如果编译器拒绝了它,那么使用预处理器会更加困难,或者预处理器调用将不太像非预处理器函数调用(它们必须在替换中输出分号,并且调用者必须避免尾随分号当使用它们时)——这将使实现更难以为性能、调试和定制目的无缝地用聪明的宏替换函数。
关于c - 为什么可以在 C 中使用多个分号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10876776/