[c++] 什么是C ++中的“ - >”运算符?



Answers

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

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

不是那么数学,但是......每张照片都能描绘出千言万语。 ...

Question

在阅读comp.lang.c++.moderated 的C ++ / STL的隐藏特性和黑暗角色之后,我完全惊讶以下代码片段在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中也有效。 标准在哪里定义,它来自哪里?




它的

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

     while( x-- > 0 ){ // x goes to 0

       printf("%d ", x);
     }

     return 0;
}

只是空间使事情看起来很有趣, --减少和>比较。




while( x-- > 0 )

是如何解析。




完全极客,但我会用这个:

#define as ;while

int main(int argc, char* argv[])
{
    int n = atoi(argv[1]);
    do printf("n is %d\n", n) as ( n --> 0);
    return 0;
}



为什么所有的并发症?

对原始问题的简单回答只是:

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

做同样的事情。 不是说你应该这样做,但是它会做同样的事情,并且会在一篇文章中回答这个问题。

x--只是上面的简写,而>只是一个普通的大于运算符。 没有太大的神秘感!

现在有太多的人使简单的事情变得复杂;)




--递减运算符, >大于运算符。

这两个操作符被用作单个操作符-->




无论如何,我们现在有一个“去”运营商。 "-->"很容易被记住作为一个方向,而“x走向零”的意思是笔直的。

此外,它在某些平台上比"for (x = 10; x > 0; x --)"更高效一些。




实际上, x是后递减的,并且正在检查该条件。 它不是--> ,它是(x--) > 0

注意:检查条件后, x值会发生变化,因为它在后递减。 一些类似的情况也可能发生,例如:

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



这相当于

while (x-- > 0)



运行此代码时,我的编译器将打印出9876543210。

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

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

如预期。 while( x > 0)实际上意味着while( x > 0)x--后减少x

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

是写同一事物的不同方式。

不过,原来的样子看起来像是“虽然x变为0”。




Related