在阅读了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去到零"的意思是直截了当的。

此外,它比某些平台上的“(x=10; x > 0; x-)”效率略高一些。

其他回答

相对于常规箭头操作员 (- >) , 您可以使用穿甲箭头操作员 : -- x> (注意箭头上那些尖锐的条纹) 。 它会为穿甲添加+1 。 因此它比常规箭头操作员更快完成环形 1 迭代 。 请尝试 :

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

这就是你的意思。

while((x--) > 0)

我们在童年的时候听到,

不要停,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走,让走

当逗号混淆时

停止,不要松手。

现在在编程中也发生同样的情况, 空间制造混乱。 : D :

为什么这么复杂?

对最初问题的简单答案是:

#include <stdio.h>

int main()
{
    int x = 10;
    while (x > 0)
    {
        printf("%d ", x);
        x = x-1;
    }
}

我并不是说你们应该这样做,但是它也这样做,而且会用一个文章回答问题。

X -只是上面的简称, 和 > 只是一个正常的比操作员更大的操作员。 没有大谜!

) 太多人让简单的事情变得复杂,

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

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

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

C++ 和 C++ 遵守“ 最大食量” 规则。 与 a- b 被翻译为 (a-) - b 的方式相同, 在您的情况下 x - > 0 被翻译为 (x-) > 0 。

规则的基本内容是左向右, 表达式通过使用最大字符组成, 从而形成一个有效的符号 。