循环迭代时,i
的值如何变化,如下所示?
我一直无法理解循环条件是否会改变I的值,或者它是否只是检查它并让它传递。
void main()
{
int i = 31;
while (i++)
{
if (i % 2 == 0)
i = i / 2;
if (i % 3 == 0)
continue;
else
i = i - 2;
printf("%d\n", i);
}
}
答案 0 :(得分:1)
在C编程中,*.cpp
为0
,而非零数字(如1,-1等)为false
。
您可以尝试使用此代码段来了解如何评估条件:
true
while循环的语法:
int result1 = (4 > 6); // 0
int result2 = (3 != 6); // 1
在您的代码中:
while(<condition>){ // evaluates either 0 or 1
// body of loop
}
对于后增量运算符while(i++) // initial value of i is 31, hence it is evaluated as true.
,i++
的值在每次传递时继续增加1。仅当i
为0(零)时,此循环才会中断/退出。
答案 1 :(得分:1)
这是一个追溯:
On loop 1, i = 32:
2的倍数? (是:i = 16)。 3的倍数? (不:我= 14,打印i)
On loop 2, i = 15:
2的倍数? (不:没有变化)。 3的倍数? (是:没有变化,没有印刷品)
On loop 3, i = 16:
2的倍数? (是:i = 8)。 3的倍数? (不:我= 6,打印我)
On loop 4, i = 7:
2的倍数? (不:没有变化)。 3的倍数? (不:我= 5,打印我)
On loop 5, i = 6:
2的倍数? (是:i = 3)。 3的倍数? (是:没有变化,没有印刷品)
On loop 5, i = 4:
2的倍数? (是:i = 2)。 3的倍数? (不:我= 0,打印我)
停止循环,因为i = 0。
打印输出:14,6,5,0
答案 2 :(得分:-1)
首先检查i
的值,然后将其提前1。
如果您输入while(++i)
,则会先更新i
的值,然后再进行检查。
在你的特殊情况下,这并不重要,只是让你知道......