我搜索了整个互联网以了解这是什么意思:
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。因此循环被终止。