c++ - C++ 中的 "-->"运算符是什么?

标签 c++ c operators code-formatting standards-compliance

看完Hidden Features and Dark Corners of C++/STLcomp.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。这在标准中是哪里定义的,又是从哪里来的?

最佳答案

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

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

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

while( (x--) > 0 )

关于c++ - C++ 中的 "-->"运算符是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1642028/

相关文章:

c++ - 使用函数作为回调时,有没有办法避免存储开销?

c++ - 为什么这个 ASIO 示例使用成员变量来传递状态而不是使用绑定(bind)?

C 编程 - 检查字符并阻止数组长度超过 50 个字符

c - 如何使用 scanf 将数字添加到数组

c++ - 为模板类重载友元运算符 <<

ruby - equal?、eql?、=== 和 == 之间有什么区别?

c++ - 如何跳过文本文件中的标题行并将其余数据读回主函数?

c++ - 为什么我从编译器得到 "expected unqualified-id before »}«"?

C - Linux 稀疏文件 : How to check if file is sparse and print 0-filled disk blocks

python - 在python中可能有多个复合赋值