>“在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);
}
}
我认为这是C,因为它在GCC中也有效。 标准在哪里定义,它来自哪里?
-->
不是操作员。 它实际上是两个独立的操作符, --
和>
。
条件的代码递减x
,而返回x
的原始(未递减)值,然后比较了原始值0
使用>
运算符。
为了更好地理解,该陈述可以写成如下:
while( (x--) > 0 )
或者对于完全不同的东西...... x幻灯片为0
while (x --
> 0)
printf("%d ", x);
不是那么数学,但是......每张照片都能描绘出千言万语。 ...
这是一个非常复杂的操作符,因此即使ISO / IEC JTC1(联合技术委员会1)也将其描述放在C ++标准的两个不同部分。
除了开玩笑,他们是两个不同的操作符: --
和>
分别在C ++ 03标准的§5.2.6/ 2和§5.9中描述。
上一篇: >" operator in C++?