在阅读了C++/STL的C++/STL的隐藏特征和暗角(comp.lang.c++.modated)之后,我感到非常惊讶的是,以下的片段在2008年视觉工作室和G++4.4编辑和工作。

代码如下:

#include <stdio.h>
int main()
{
    int x = 10;
    while (x --> 0) // x goes to 0
    {
        printf("%d ", x);
    }
}

产出:

9 8 7 6 5 4 3 2 1 0

我想这是C,因为它在海合会也是工作。标准中的定义在哪里,它来自何处?


当前回答

或者是完全不同的东西... x 幻灯片到 0 。

while (x --\
            \
             \
              \
               > 0)
     printf("%d ", x);

不那么数学,但是... 每幅画画上写着一千个字...

其他回答

在 -- 和 >. x 之间缺少一个空白。 x 在检查条件 x>0 后, 出现衰减 。 @ action: inmenu

实际上, x 是在降序后, 条件正在检查中。 它不是 -- >, 而是 (x- -) > 0

注:在检查条件后, x 的值被更改,因为它在降序后发生。一些类似的情况也可能发生,例如:

-->    x-->0
++>    x++>0
-->=   x-->=0
++>=   x++>=0

- >不是一个操作员。它实际上是两个单独的操作员,--和 >。

条件值的代码缩进 x, 同时返回 x 的原始值( 未降值 ) , 然后使用 > 运算符将原始值与 0 比较 。

为了更好地了解,声明可以写成如下:

while( (x--) > 0 )

x 可以在 C++ 的相反方向更快地达到零:

int x = 10;

while( 0 <---- x )
{
   printf("%d ", x);
}

8 8 6 4 2

你可以用箭来控制速度!

int x = 100;

while( 0 <-------------------- x )
{
   printf("%d ", x);
}

90 90 80 70 60 50 40 30 10

; ; ;)

这是两个运算符的组合。首先-- 用于减少值, 并且 > 用于检查值是否大于右手操作符。

#include<stdio.h>

int main()
{
    int x = 10;

    while (x-- > 0)
        printf("%d ",x);

    return 0;
}

产出将是:

9 8 7 6 5 4 3 2 1 0