考虑这个 C 代码:
#include <stdio.h>;
int main(void) {
puts("Hello, world!");; ;
;
return 0; ;
; ;
};
在这里,我几乎在所有可能的地方都放了分号。只是为了乐趣。但令人惊讶的是it worked !包含后我收到了关于分号的警告,但其他绝对错误的分号起作用了。如果我忘记在 puts
后加上分号,我会得到以下错误
error: expected ';' before 'return'
为什么很多错误和无用的分号不会导致错误?在我看来,它们应该被视为语法错误。
最佳答案
单个分号构成一个空语句。它不仅合法,在某些情况下也很有用,例如,不需要实体的 while
/for
循环。一个例子:
while (*s++ = *t++)
;
C11 6.8.3 Expression and null statements
A null statement (consisting of just a semicolon) performs no operations.
唯一的语法错误是这一行:
#include <stdio.h>;
关于c - 为什么没有分号给出错误,但太多分号却没有?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30279168/