在while循环结束时添加一个`;`

Gop*_*opi -2 c

#include<stdio.h>

int main()
{
    int i=5;
    while(i--)
    {
        printf("%d\n",i);
    };
    printf("Out of loop\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常!是否;在一个循环的结束并不意味着什么?所以,即使我们添加它,我们也没有任何问题?只是好奇!我认为;在循环结束时添加没有任何意义.

unw*_*ind 10

它"有效",但它是一个空的语句,因此它改变了程序的结构.

考虑一下:

if (foo())
  while (bar())
  {
    foo_some_more()
  }
else
{
  do_something_about_it();
}
Run Code Online (Sandbox Code Playgroud)

上面的工作既然while是单一的陈述,因此else仍然能够"找到" if正确的.如果在while-loop的右大括号后面添加一个分号,则会破坏该结构并且不再编译.

因此,虽然空的陈述看起来无害,但它们并非如此,它们确实应该被避免.另外:当然,它们会给代码增加无意义的混淆.


Nat*_*tta 6

;这里被认为是一个空语句或空语句.

样品

int i = 0;;
Run Code Online (Sandbox Code Playgroud)

有关详细信息,您可以查看问题.

警告:不要将此视为拇指规则.在某些情况下,表示可能看起来相同,但它们不是空语句,而是语法的一部分.示例:do..while循环