C 为什么要印10颗星? for(i=0;i
它将打印10颗星,因为您正在从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是第一个操作 你错
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("*");
}