Avatar ·

C++中的'-->'运算符是什么意思,为什么它能工作?

大家好!我正在学习C++,在网上偶然发现了一段奇怪的代码。里面写着类似这样的内容: ```cpp int x = 10; while (x --> 0) { printf("%d ", x); } ``` 这段代码竟然能运行!它输出从9到0的数字。我一开始以为这是什么我漏掉的新运算符“箭头”(arrow operator)。但后来我尝试把`x --> 0`写成不带空格的`x-->0`——也能运行。而`x->0`却不行,会报编译错误。 我查了C++文档,没有找到任何关于`-->`运算符的提及。C++标准中有`->`(通过指针访问成员)、`--`(递减)运算符,但没有`-->`。这怎么可能?是编译器的把戏还是标准的特点?为什么`while (x --> 0)`这段代码能编译并运行,尽管这个运算符并不存在?在真实项目中这样写安全吗?希望能得到解释! P.S. 编译器版本:GCC 11.2,标准C++20。 <<>>

简短回答:这是