C++中的“- ->”操作符是啥?

C++中的“- ->”操作符是啥?

来自GManNickG的提问

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

在论坛comp.lang.c++.moderated上看了Hidden Features and Dark Corners of 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也能正常编译。那么问题来了,操作符-->在C语言标准的何处有定义呢?

来自Potatoswatter的最佳回答

-->根本不是操作符。事实上它是两个独立的操作符:-->

条件语句递减x,同时返回x的原始值(不是减1之后的值),用这个原始值跟0作比较。

为了更好的理解,该语句可以这样写:

while( (x--) > 0 )

参考资料

本文译自What is the “–>” operator in C++?

发表评论

电子邮件地址不会被公开。 必填项已用*标注