c中的循环迭代

时间:2015-04-04 14:10:02

标签: c

#include<stdio.h>
int main()
{
    int i,x=10;
    for(i=0;i<7;i++);
    {
        x++;
    }
    printf("%d",x);
}

输出 11

无论for循环迭代多少次,x的值都保持为11.为什么会这样?

2 个答案:

答案 0 :(得分:6)

从这里删除分号:

for(i=0;i<7;i++);

分号使for循环具有空体。它使它等同于

for(i=0;i<7;i++){}

在编译器中包含警告标志(GCC中的-Wextra)会发出有关此类问题的警告。

答案 1 :(得分:2)

C中的分号(; )标点符号表示代码块已完成。这意味着如果你使用

for(i=0;i<7;i++);
    {
        x++;
    }

对于循环在到达括号之前结束。然后括号之间的代码就像循环中的普通行一样运行。如果您希望循环包含括号,请删除分号,例如:

for(i=0;i<7;i++)
    {
        x++;
    }