看完后隐藏的功能和C / STL的暗角上comp.lang.c++.moderated,我完全意外的是,下面的代码片断编译并在两个Visual Studio 2008和G 4.4的工作。
comp.lang.c++.moderated
这是代码:
#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使用>运算符进行比较。
x
0
为了更好地理解,该语句可以写成如下:
while( (x--) > 0 )
它相当于
while (x-- > 0)
x--(post decrement) 等价于x = x-1so,代码转换为:
x--
x = x-1
while(x > 0) { x = x-1; // logic } x--; // The post decrement done when x <= 0