#include<stdio.h>
int main()
{
int i,x=10;
for(i=0;i<7;i++);
{
x++;
}
printf("%d",x);
}
输出 11
无论for循环迭代多少次,x的值都保持为11.为什么会这样?
答案 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++;
}