条件下的操作意味着什么?

时间:2013-07-25 04:37:16

标签: c loops conditional-statements

我在互联网上搜索了解这意味着什么:

while(i++)

我在这看到了很多相似的代码。 增量返回到while循环的条件是什么?

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

True表示任何不等于0的内容。

答案 2 :(得分: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

有关增量运算符的更多信息,请参阅this question

答案 3 :(得分: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)

答案 4 :(得分:0)

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

TRUE = 0以外的任何值

FALSE = 0

如果条件为真,则循环将以其他方式运行,它将被终止。

在你的情况下,你说WHILE(i++)这意味着你将继续增加i&的价值。循环将继续,直到你得到0

示例:

i= -2;
WHILE(i++)
{
condition
}

在第一个循环中,i的值将为-2,这是真的。条件将被执行&然后我会增加。因此,i的值现在变为-2+1 = -1

在第二个循环中,i的值将为-1,这是真的。条件将被执行&然后我会增加。因此,i的值现在变为-1+1 = 0

在第三个循环中,i的值将为0,这是假的。因此循环终止。