-1

我搜索了整个互联网以了解这是什么意思:

while(i++)

我见过很多类似的代码。增量返回到 while 循环的条件是什么?

4

5 回答 5

1

你可以试试这段代码:

  #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)
于 2013-07-25T04:48:21.420 回答
1

该构造i++做了两件事。它计算变量的当前值,i然后将存储的值加一。因此,如果i等于-1,则在 的情况下while(i++)i++求值为-1,其中(非零)为真,递增i0,执行循环体,在下一次迭代中,i++求值为 0 并递增i1,而零为false,while完成和执行超出它。

于 2013-07-25T04:42:32.620 回答
1

递增不会向 while 循环条件返回任何内容。i首先检查变量的值是否为真 a,然后递增。

True 表示任何不等于0

于 2013-07-25T04:42:56.517 回答
1

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

有关增量运算符的更多信息,请参阅此问题

于 2013-07-25T04:47:32.870 回答
0

WHILE循环只理解两件事,即TRUEFALSE

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。因此循环被终止。

于 2013-07-25T05:02:28.723 回答