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





10 Answers

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

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

不是那么数学,但......每张图片都描绘了千言万语......

运算符英文 c++运算符 是什么运算符

comp.lang.c++.moderated上阅读C ++ / STL的Hidden Features和Dark Corners后 ,我完全惊讶于以下代码片段在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。 标准中定义了哪里,它来自何处?




它相当于

while (x-- > 0)

x-- (后递减)相当于x = x-1所以,代码转换为:

while(x > 0) {
    x = x-1;
    // logic
}



它的

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

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

       printf("%d ", x);
     }

     return 0;
}

只是空间使事情变得有趣, --减少和>比较。




while( x-- > 0 )

是如何解析的。




我读过的一本书(我记不清哪本书)说明: 编译器尝试使用左右规则将表达式解析为最大的标记

在这种情况下,表达式:

x-->0

解析最大的代币:

token 1: x
token 2: --
token 3: >
token 4: 0
conclude: x-- > 0

同样的规则适用于此表达式:

a-----b

解析后:

token 1: a
token 2: --
token 3: --
token 4: -
token 5: b
conclude: (a--)-- - b

我希望这有助于理解复杂的表达式^^




无论如何,我们现在有一个“去”操作员。 "-->"很容易被记住作为一个方向,而“当x变为零”意味着 - 直。

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




运行此代码时,我的编译器将打印出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-- post递减x

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

是一种不同的写作方式。

虽然原来看起来像“虽然x变为0”但很好。




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

这两个运算符作为单个运算符应用,如-->




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

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

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



为什么所有的并发症?

原始问题的简单答案就是:

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

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

x--只是上述的简写, >只是一个普通的大于operator 。 没什么大不了的!

现在有太多的人把简单的事情弄复杂了;)




Related