C:循环打印

时间:2018-08-21 18:19:24

标签: c for-loop

试图用C语言完成一个更大的任务,但是由于某种原因,这个小难题(或者我认为)没用。

我想在每行上打印0到9:

#include <stdio.h>
#include <stdlib.h>

#define MAX 9

int main()
{

    for (int counter = 0; counter == MAX; counter++)
        printf("%d \n", counter);

    return 0;
}

但是,当我构建并运行时,什么也不会发生*。我已经呆了一个多小时了...

* Nothing = Process returned 0 (0x0) ...

5 个答案:

答案 0 :(得分:2)

counter == MAX更改为counter <= MAX。因此,在这种情况下,您的循环将运行直到计数器小于或等于MAX

答案 1 :(得分:2)

只要检查表达式for保持counter == MAXtrue循环将继续运行。在此代码段中绝不是这种情况。您可能是说counter != MAX

这将打印0-8,而不是0 -9。为此,您需要将MAX设置为10或将循环条件更改为counter <= MAX

答案 2 :(得分:2)

我的猜测是,您认为for循环中第一个分号之后的语句是在条件为true时停止循环的条件。实际上,要执行循环,该语句必须为true /非零。

改为尝试for(int counter = 0; counter <= MAX; counter++)

答案 3 :(得分:1)

for中间区域后面的想法是循环继续的条件,如果为真,则不要停止。当条件返回true值时,循环将继续。在您的情况下,条件必须看起来像这样:counter <= MAX。而在整个循环中:

for (int counter = 0; counter <= MAX; counter++)
    printf("%d \n", counter);

答案 4 :(得分:0)

有两件事可能会阻止此代码运行。

  1. 第一件事是其他人都指出的。在for循环的条件部分中,条件永远是错误的

    for(initialization; condition; increment/decrement)
    {
        //code here
    }
    

正确的条件似乎是

    counter <= MAX
  1. 第二件事可能是您使用的是旧的编译器,在这种情况下,您需要在执行任何其他操作之前在代码的开头初始化计数器。在许多旧的编译器中,不允许进行内部初始化。最合适的位置是在{功能块的大括号main()之后。

因此最好的方法是

    #include <stdio.h>
    #include <stdlib.h>    
    #define MAX 9

    int main()
    {
        int counter;
        for (counter = 0; counter <= MAX; counter++)
            printf("%d \n", counter);

    return 0;
    }