我搜索了整个互联网以了解这是什么意思:
while(i++)
我见过很多类似的代码。增量返回到 while 循环的条件是什么?
你可以试试这段代码:
#include"stdio.h"
int main()
{
int i = -3;
while(i++)
printf("NUM I IS: %d\n",i);
i = -3;
printf("\n");
while(++i)
printf("NUM I IS: %d\n",i);
return 0;
}
结果是:
NUM I IS: -2
NUM I IS: -1
NUM I IS: 0
NUM I IS: -2
NUM I IS: -1
看,第二个循环只运行了两次,但第一个循环运行了 3 次。
所以
while(i++)
==>
while(i)
{
i = i +1;
...
}
和
while(++i)
==>
while( i = i+1)
该构造i++做了两件事。它计算变量的当前值,i然后将存储的值加一。因此,如果i等于-1,则在 的情况下while(i++),i++求值为-1,其中(非零)为真,递增i至0,执行循环体,在下一次迭代中,i++求值为 0 并递增i至1,而零为false,while完成和执行超出它。
递增不会向 while 循环条件返回任何内容。i首先检查变量的值是否为真 a,然后递增。
True 表示任何不等于0。
在while( i++ )中, 的值i被评估为 的条件while, 之后i增加1. 这在C中称为后增量,具有副作用。
例子,
i = 1;
while( i++ ) // same as while( i ),
// side-effect is `i` incremented by 1 after this
// now i is 2
有关增量运算符的更多信息,请参阅此问题。
WHILE循环只理解两件事,即TRUE和FALSE。
TRUE=除 0 以外的任何值
FALSE=0
如果条件为真,则循环将运行,否则将终止。
在您的情况下,您说WHILE(i++)这意味着您将继续增加 i 的值,并且循环将继续进行,直到您获得0
例子:
i= -2;
WHILE(i++)
{
condition
}
在第一个循环中, i 的值将-2是 true。条件将被执行,然后 i 将被递增。因此, i 的值现在变为-2+1 = -1
在第二个循环中, i 的值将-1是 true。条件将被执行,然后 i 将被递增。因此, i 的值现在变为-1+1 = 0
在第三个循环中, i 的值将0是 false。因此循环被终止。