This question already has answers here:
Closed 12 months ago.
C: What is the difference between ++i and i++?
(21个答案)
我在解一本书中的多项选择C代码。其中有两个问题涉及预递减和后递减初始化为0的char变量。两者的输出是非常不同的。我不明白那里发生了什么。
代码1
char i=0;
do
{
    printf("%d ",i);
}while(i--);
return 0;

此代码段的输出为0。
代码2
char i=0;
do
{
    printf("%d ",i);
}while(--i);
return 0;

这个输出是
0,-1,-2,…-128127126,….1。
有人能解释为什么会这样吗?

最佳答案

在代码while循环检查i==0与否。如果i!=0它将继续。
最初i的第一个代码值。所以在打印后,它会检查是否0。如果0它将中断循环或通过递减i==0继续。所以在代码1中使用了后递减。先检查值,然后递减值。
在第二个代码值i==0时,初始值i。因此,在打印后,它会递减,然后检查是否i。它是预减量。先减小值,然后检查。
这里,0是指0的大小和范围。因此,在递减值ii==0之后,它一直递减,直到它进入“cc>”,并通过打印0、1、…、- 128127……1退出循环。

10-08 03:55