小编典典

C/C++ 中的“-->”运算符是什么?

c++

看完后隐藏的功能和C / STL的暗角上comp.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);
    }
}

输出:

9 8 7 6 5 4 3 2 1 0

我认为这是 C,因为它也适用于 GCC。这在标准中是在哪里定义的,它是从哪里来的?


阅读 609

收藏
2021-12-30

共2个答案

小编典典

-->不是运营商。它实际上是两个独立的运算符,-->

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

为了更好地理解,该语句可以写成如下:

while( (x--) > 0 )
2021-12-30
小编典典

它相当于

while (x-- > 0)

x--(post decrement) 等价于x = x-1so,代码转换为:

while(x > 0) {
    x = x-1;
    // logic
}
x--;   // The post decrement done when x <= 0
2021-12-30