在阅读了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);

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

当我运行这个代码时 我的编译器会打印出9876543210

#include <iostream>
int main()
{
    int x = 10;

    while( x --> 0 ) // x goes to 0
    {
        std::cout << x;
    }
}

如预期的那样。当值( x - - > 0) 实际意味着当值( x > 0 ) 。 x - 后天缩减 x 。

while( x > 0 ) 
{
    x--;
    std::cout << x;
}

是一个不同的写法 相同的东西。

原版看起来像"X到0" 真好

char sep = '\n'  /1\
; int i = 68    /1  \
; while (i  ---      1\
                       \
                       /1/1/1                               /1\
                                                            /1\
                                                            /1\
                                                            /1\
                                                            /1\
                            /           1\
                           /            1 \
                          /             1  \
                         /              1   \
                         /1            /1    \
                          /1          /1      \
                           /1        /1        /1/1> 0) std::cout \
                              <<i<<                               sep;

对于较大的数字, C++20 引入一些更先进的环绕功能。 首先, 抓住我, 我们可以建立一个反环绕行, 并将其偏移到 std:: ostream 上。 但是, i 的速度是执行定义的, 这样我们可以使用新的 C++20 速度操作器 i 来加速它。 我们还必须用建筑墙来捕捉它, 否则, 我就会留下范围, 并去引用它引起不确定的行为 。 要指定分隔符, 我们可以使用 :

 std::cout \
           sep

在那里,我们有一个循环 从67到1。

这是一个非常复杂的操作员,所以甚至ISO/IEC JTC1(联合技术委员会1)也将其描述置于C++标准的两个不同部分。

除此以外,它们是两个不同的操作者: -- -- 和 > 分别在C+/03标准§5.2.6/2和§5.9中说明。

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

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

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