阅读后隐藏功能和使用深色角 + / STLcomp.lang.c++.moderated,我是完全惊讶,下面的代码段编译,并在 Visual Studio 2008 和 G++ 4.4 中工作。

下面是该代码︰

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

我将假定这是 C,因为它也在 GCC 工作。其中这定义在标准中,并有它来自何处?

2008-09-20 15:00:47
问题评论:

Behold 的混淆的两个小的括号,就可以避免:) + 1 的纪律处分足以说 WTF 和:) 询问

或甚至只是适当的间距...我并不认为我见过的空间变量之间,或者++--之前...

可以还原此"转到"运算符 (0 <-x)。并且还没有一个"运行为"运算符 (0 <---x)。嘻嘻,我听说过 c + + 语法的滑稽事情 =) + 1 的问题。

Funnily 足够,尽管解释是非常糟糕的事情,但它 does 描述代码正确。:)

设想一下,新语法可能性︰ #define upto ++<#define downto -->如果您感到邪恶,您可以执行#define for while(#define do ) { (和#define done ;}) 写for x downto 0 do printf("%d ", x) done哦,人类...

回答:

-->不是运算符。它实际上是两个单独的运算符, -->.

条件代码递减xx原 (而不是减少) 值,然后比较的原始值0使用>操作符返回时。

为了更好地理解,语句都可以编写如下︰

while( (x--) > 0 )

再说一遍,这种看起来像某种区域运算符在该上下文中。

我同意,我应该看过它。尽管这些所有理由只是借口,可能是看到它在 comp.lang.c++ (自动的"信任"字),更不必说另一个标牌的警报和正在已厌倦了我的组合。

此答案只是部分正确︰ 变量 x 0 与进行比较之后是减少开机自检

说 x 后减少而且然后媲美 0 是相同的与 0 进行比较后说︰ x 会减少

在 Java 中还编译:)

这是一个非常复杂的运算符,因此即使ISO/IEC JTC1 (联合技术指导委员会 1)放在 c + + 标准的两个不同部分的说明。

还一边调侃说,它们是两个不同的运算符︰ -->分别介绍 §5.2.6 / 2 和 §5.9 C + + 03 标准。

或...x 幻灯片为 0 完全不同的东西

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

因此数学,但是...每个图片绘制有 1000 多个...

很抱歉,我看这个。这是如何工作的?

@mafutrct-我还记得它在 C 就行的后面追加下一步就像没有一个分行符。S 的基本上不执行任何操作。

sliiiiiide 向右

@mafu ' 字符告诉在下一行继续进行当前的行,因此编译器应合并两行并编译为一个编译器。虽然 (x--> 0) 将运行直到 x 等于-1。但是,他使缩进的方式使它看上去像 x 滑为零。尽管 x 幻灯片与 0...

IIRC、 K & R C 允许之间的空白-的在减量运算符,这种情况下可以在中间,它的外观更酷使用反斜杠。:)

它等效于

while (x-- > 0)

虽然这可能会帮助太多不能理解的代码,几行来正确解释它会有所帮助。

@Dukeling x--x-1短手表示法

@AlbertRenshaw 肯定的年旧注释您答复意味着,不是单个运算符,但而不是被放在一种混乱的方式的两个运算符的解释就已经很有帮助。

我打算说 x-= 1 @mbomb007 对不起 — — 后期 haha 提升了

@AlbertRenshaw,但x -= 1x--并不相同。.如果您想要将它写类似的然后它必须是while (x >= 0) { x -= 1; }

它具有

#include <stdio.h>
int main(void)
{
     int x = 10;

     while( x-- > 0 ) // x goes to 0
     {
       printf("%d ", x);
     }

     return 0;
}

刚才的空间使事物看上去有趣、 --递减和>比较。

请输入您的翻译

What is the name of the “-->” operator in C++?

确认取消