c - for循环第一条语句应该是声明

标签 c

main ()
{
      char i = 0;
      for (i <= 5 && i >= -1; ++i; i > 0)
          printf ("%d", i);
      getch ();
}

我是一名 Java 学生,最近我开始编写 C 程序。我在一本C书上看到了这个问题。我对这个程序有以下疑问:

  1. 这个程序编译得很好。这不应该导致编译器错误吗? for 循环的第一部分应该是一个声明,但这里是一个 bool 表达式。
  2. 输出为 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/

相关文章:

ios - Obj-c 如何继承一个有参数数组的方法?

c - Hook 类似 Printf 的函数并修改输出

c - 指向指针的指针

java - JNI : Get java. lang.UnsatisfiedLinkError 错误

c - C语言给字符串加一个整数,如何理解结果?

c++ - 尽可能在本地声明变量和 switch 语句

c - 如何在C中显示链表中节点的地址

c - 你如何获得传递给函数的数组的大小?

c - 使用C中的函数查找数组中的最大值和最小值

c - 指针指向指针,如何获取值?