在阅读了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,因为它在海合会也是工作。标准中的定义在哪里,它来自何处?


当前回答

-- > 的用法具有历史意义。 衰落曾经( 在某些情况下现在仍然是) 比x86 结构的递增速度快。 使用 -- > 表示x 将达到 0, 并且吸引有数学背景的人 。

其他回答

为什么这么复杂?

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

#include <stdio.h>

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

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

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

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

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

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

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

while( (x--) > 0 )

我们用常规的方式定义状态, 而循环括号“ () ) ” 和牙套“\\\\\\\\\\\\\\\\\\\ ” 中的终止状态, 但是-- & > 是一个同时定义所有状态的方法。 例如 :

int abc(){
    int a = 5
    while((a--) > 0){ // Decrement and comparison both at once
        // Code
    }
}

上面写着, 降一个, 并运行回环, 直到时间 a 大于 0 。

换句话说,它本该是这样的:

int abc() {
    int a = 5;
    while(a > 0) {
        a = a -1 // Decrement inside loop
        // Code
    }
}

无论是哪种方式,我们都做同样的事情,实现同样的目标。

- 是递减操作员, > 大于操作员。

两个操作员作为单一操作员来应用,例如 -- > 。

这个 -- > 根本不是一个操作员。 我们有一个类似 -- > 的操作员, 但不像 -- > 。 这只是对时间( x - - - > 0) 的错误解释, 仅仅表示 x 有后衰落操作员, 而这个循环会运行到它大于零 。

写这个代码的另一种简单方式是时间( x - - ) 。 当它出现虚假状况时, 循环就会停止, 这里只有一个案例, 即 0 。 所以当 x 值降为零时它就会停止 。