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

新手上路,请多包涵

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);
    }
}

输出:

 9 8 7 6 5 4 3 2 1 0

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

原文由 GManNickG 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 531
2 个回答

--> 不是操作员。它实际上是两个独立的运算符, -->

The conditional’s code decrements x , while returning x ’s original (not decremented) value, and then compares the original value with 0 using the > 运营商。

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

 while( (x--) > 0 )

原文由 Charles Salvia 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用穿甲箭头操作符来代替常规的箭头操作符 (–>):–x> (注意箭头尖端的那些锋利的倒钩)。它为穿甲增加了 +1,因此它比常规箭头运算符更快地完成循环 1 迭代。自己试试:

 int x = 10;
while( --x> 0 )
    printf("%d ", x);

原文由 hydrechan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题