在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.标准中定义了哪里,它来自何处?
解决方法:
– >不是操作符.它实际上是两个独立的运算符, – 和>.
条件的代码递减x,同时返回x的原始(未递减)值,然后使用>将原始值与0进行比较.操作符.
为了更好地理解,该声明可以写成如下:
while( (x--) > 0 )