C 为什么要印10颗星? for(i=0;i

C 为什么要印10颗星? for(i=0;i,c,C,它将打印10颗星,因为您正在从0到9进行计数。这就是10次迭代 第一次迭代将使用i=0而不是1 一旦for循环中的内容被操作,就会执行++i for循环的步骤: 使用启动条件(i=0)启动循环,并检查终止条件 操作循环中的命令 操作递增/递减条件(++i)-除非循环中的命令已执行,否则不会执行此操作 检查终止条件(i Quote:因为++i是第一个操作,所以在检查条件之前使i=1 这就是你出错的地方。++i是循环的最后一个操作 按照我的逻辑,这个提示符应该打印9颗星,因为++i是第一个操作 你错

它将打印10颗星,因为您正在从
0
9
进行计数。这就是10次迭代

第一次迭代将使用
i=0
而不是
1

一旦for循环中的内容被操作,就会执行
++i

for循环的步骤:

  • 使用启动条件(
    i=0
    )启动循环,并检查终止条件

  • 操作循环中的命令

  • 操作递增/递减条件(
    ++i
    )-除非循环中的命令已执行,否则不会执行此操作

  • 检查终止条件(
    i
    Quote:因为++i是第一个操作,所以在检查条件之前使i=1

    这就是你出错的地方。++i是循环的最后一个操作

    按照我的逻辑,这个提示符应该打印9颗星,因为++i是第一个操作

    你错了

    for(i = 0; i<10 ; ++i)
      printf("*");
    
    相当于

    for (a; b; c) d
    
    所以
    c
    不是在第一次执行,而是在第一次迭代之后执行

    因此,您有10次迭代。

    For循环的开始方式如下
    for(i=0;i在进入每次迭代之前检查for循环条件,并在每次迭代之后计算增量部分。在第一次迭代中,i为0,在printf之后递增;而不是在printf之前递增。使用++i或i++无关紧要。

    如果将其转换为等价的while循环,则它将是:

    a;
    while (b) {
        d;
        c;
    }
    
    i = 0;
    while (++i<10) {
      printf("*");
    }
    
    i=0;
    
    虽然(i++i是第一个函数,所以从1-9开始,因为0没有进入循环,对吗?@user2918658第三个子句在每个循环的末尾运行iteration@user2918658否..循环从初始条件开始..操作循环内的命令,然后继续操作递增/递减条件。您要做什么“第一功能”的含义.分号
    分隔了语句,因此for循环中有3条语句。第一条语句在循环外。下一条语句在每个循环的开头执行。最后一条语句将在循环的结尾运行。由于循环尚未结束,++i尚未执行。@sukhvir我认为由于堆栈溢出,下一条语句在那里low不应该被用作begginer的帮助台。这是一个真正的问题,但几乎任何做过一点编程的人都可以回答,或者通过一些简单的搜索(比如谷歌搜索“C for loop”)因此,这与此无关。我认为您需要从一些好的教程开始。这里有一些,您的第一个代码块是不正确的。++I;应该在printf之后,而不是之前。(但您所做的核心点对我来说似乎是正确的。)抱歉,我的错误现在已经修复。
    i = 0;
    while (++i<10) {
      printf("*");
    }
    
    for (i = 0; ++i < 10;) {
        printf("*");
    }