这是一个非常简单的C程序:
int main()
{
int i = 0;
while(i++ < 10)
printf("%d\n", i);
return 0;
}
结果是:
1
2
3
4
5
6
7
8
9
10
为什么0
不是第一个打印的数字?
如果我将i++
替换为++i
,我会得到这个:
1
2
3
4
5
6
7
8
9
对于i++
和++i
,第一个数字为1
。
我希望在循环0
中看到while()
后期增量。
谢谢。
答案 0 :(得分:9)
i++
(和++i
)是while
表达式评估的一部分,在打印之前发生。这意味着它最初将始终打印1
。
i++
和++i
变体之间的唯一区别是增量发生在表达式本身内部,这会影响打印的最终值。每个的等效伪代码是:
while(i++ < 10) while i < 10:
i = i + 1
printf("%d\n", i); print i
i = i + 1
和
i = i + 1
while(++i < 10) while i < 10:
printf("%d\n", i); print i
i = i + 1
让我们说i
达到9
。使用i++ < 10
,它会在9 < 10
表达式之前使用while
,然后在打印前将i
增加到10。因此检查使用9然后打印10。
使用++i < 10
,首先递增i
,然后使用10 < 10
作为while
表达式。因此,检查使用10并且不会打印任何内容,因为该循环因为该检查而退出。
答案 1 :(得分:2)
i++
后增量,++i
预增量。后递增意味着在递增对象后返回先前的值。预增量意味着对象递增然后返回。无论哪种方式,对象在评估其表达式时都会递增,这就是为什么你不能将0
作为第一个输出。
答案 2 :(得分:0)
在检查之后和打印之前增加i
。在检查和打印后递增,或使用do while
循环:
int main()
{
int i = 0;
do {
printf("%d\n", i);
} while(i++ < 10);
return 0;
}
答案 3 :(得分:-1)
当评估while循环while(i++ < 10)
时,它正在检查i的值,向其中添加一个,并将旧值与10进行比较。当您将其更改为{{1在将新值与10比较之前,它会增加while(++i < 10)
的值。
无论哪种方式,当你到达下一个语句i
已经增加时。
如果您想从0到9打印,可以尝试
i
代替。在这种情况下,{/ 1}}的值在将其原始值提供给 while(i < 10)
printf("%d\n", i++);
语句后递增。
答案 4 :(得分:-2)
在阻止并测试
时检查条件是否为真条件为false终止while循环。
查看while循环++中的帖子增量
void main()
{
int rmvivek;
clrscr();
printf(“输入整数值1到10”);
的scanf( “%d”,&安培; rmvivek);
while(10&gt; = rmvivek ++)
{
printf(“值为=%d \ n”,rmvivek);
}
的getch();
}