首页 > 解决方案 > 与“for循环”输出混淆

问题描述

我有一个非常基本的 C 程序,并对其输出感到困惑:

#include<stdio.h>

int main() {
        int i;
        char s[] = "K";

        for(i=0; s[i]; i++); {
                printf("%d ", i);
                printf("%c ", s[i]);
        }
}

它将 i 值输出为 1,但根据该线程的答案之一: 循环中预增量和后增量之间的差异?

    int i = 0; // Initialization

    loopStart:
    if (i < 5) // Condition
    {
       Output(i);

       i++ or ++i; // Increment

       goto loopStart;
     }

在 Output(i) 之后发生增量(相当于 printf("%d ", i);),那么 i 的值是 1 而不是 0?

标签: clinuxfor-loop

解决方案


这是因为;在for循环之后

for(i=0; s[i]; i++);

去掉分号就可以了。

for(i=0; s[i]; i++)

这是因为分号将被视为语句的结尾,并且您printf不是循环的一部分,并且将在循环执行完成后执行。


推荐阅读