for(i = 0; i<10 ; ++i)
printf("*");
根据我的逻辑,这个提示应该打印9星,因为++ i是第一个操作,在检查条件之前使i = 1。那么从i = 1到i = 9,它将打印出* * 9。正确?
答案 0 :(得分:7)
它会打印10颗星,因为你从0
计算到9
..这是10次迭代
第一次迭代将使用i=0
而不是1
++i
就会被执行
for循环的步骤:
使用启动条件(i=0
)启动循环并检查终止条件
操作循环中的命令
操作增量/减量条件(++i
) - 除非循环内的命令已被执行,否则不会执行此操作
检查终止条件(i<9
) - 如果条件不满足则退出循环
再次在循环内执行操作命令
再次应用递增/递减
重复4-7
<强>问题:强>
为什么OP的这个问题被低估了?
对我来说,这个问题对于从编程开始的人来说似乎非常真实。为什么我们不能更加鼓励和乐于助人,而不是因为某人提出真正的问题而失去动力?
我知道这个问题对于大多数人来说可能太微不足道了,但这并不是阻止某人提出这些问题的理由(特别是如果他们不熟悉编程)
答案 1 :(得分:7)
根据我的逻辑,此提示应打印9颗星,因为++ i是第一个操作,
这里你错了。
for (a; b; c) d
相当于
a;
while (b) {
d;
c;
}
所以c
首先不执行,但仅在第一次迭代后执行。
因此,您有10次迭代。
答案 2 :(得分:3)
如果将其转换为等效于while循环,则为:
i = 0;
while (i<10) {
printf("*");
++i;
}
你在寻找的是什么;
i = 0;
while (++i<10) {
printf("*");
}
所以循环的等价物是:
for (i = 0; ++i < 10;) {
printf("*");
}
在逻辑检查步骤中增加变量的位置。
答案 3 :(得分:0)
引用:因为++ i是第一个操作,在检查条件之前使i = 1
那是你出错了。 ++ i是循环的最后一个操作。
答案 4 :(得分:0)
For循环就像这样开始 for(i = 0; i&lt; 10; ++ i)
此处评估i = 0,然后检查条件i <10。 然后在循环中进行操作然后我将增加,即++ i,然后它检查条件i <10; 像这样它会一直持续到0到9然后停止。
所以第一次i = 0并不重要++ i或i ++,因为它将在循环内的执行语句结束时进行评估。
答案 5 :(得分:0)
在进入每次迭代之前检查for循环条件,并在每次迭代后计算增量部分。在第一次迭代时,i为0,并且在printf之后递增;不是之前。使用++ i或i ++并不重要。