main ()
{
char i = 0;
for (i <= 5 && i >= -1; ++i; i > 0)
printf ("%d", i);
getch ();
}
我是一名 Java 学生,最近我开始编写 C 程序。我在一本C书上看到了这个问题。我对这个程序有以下疑问:
- 这个程序编译得很好。这不应该导致编译器错误吗? for 循环的第一部分应该是一个声明,但这里是一个 bool 表达式。
- 输出为
1,2,3,4.....126,127,-128....-2,-1
。为什么输出停在-1?这应该是一个无限级数,永远重复上面的级数。
最佳答案
For 循环由三个表达式组成,所以这个例子编译得很好。第一个是i <= 5 && i >= -1
.它什么都不做。第二个是循环停止的条件。在你的情况下 ++i
表示当 i
时循环停止达到值0。第三部分i>0
什么也没做。所以你的周期:
for (i <= 5 && i >= -1; ++i; i > 0)
printf ("%d", i);
相当于:
i <= 5 && i >= -1;
while (++i) {
printf ("%d", i);
i>0;
}
相当于:
while (++i) {
printf ("%d", i);
}
关于c - for循环第一条语句应该是声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22039395/