在阅读了C++/STL的C++/STL的隐藏特征和暗角(comp.lang.c++.modated)之后,我感到非常惊讶的是,以下的片段在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,因为它在海合会也是工作。标准中的定义在哪里,它来自何处?
( -- > 0) 系指 (x - - > 0) 。
您可以使用 (x -- >) 输出: 9 8 7 7 6 5 4 4 3 2 1 0
输出: 9 8 7 7 6 5 5 4 3 2 1
您可以使用
(--\
\
x > 0)
产出: 9 8 8 7 7 6 5 4 4 3 2 1
您可以使用
(\
\
x --> 0)
产出: 9 8 8 7 7 6 5 4 4 3 2 1 0
您可以使用
(\
\
x --> 0
\
\
)
产出: 9 8 8 7 7 6 5 4 4 3 2 1 0
您也可以使用
(
x
-->
0
)
产出: 9 8 8 7 7 6 5 4 4 3 2 1 0
同样,您也可以尝试很多方法来成功执行此命令 。
这里 -- -- 是一个纯净的后衰减操作员。
while (x-- > 0) // x goes to 0
{
printf("%d ", x);
}
开始时, 条件会以 (x > 0) / / / 10 > 0 来评价 (x > 0) / / 10 > 0 。 现在, 因为条件是真实的, 它会以衰减值 x - / x = 9 = 9 进入循环。 这就是为什么第一个打印值是 9 等。 在最后一个循环 x= 1 中, 条件是真实的 。 根据非自动运算符, 在打印时, 值将修改为 x = 0 。 现在, x = 0, 它会将条件 (x > 0) 评估为假值, 而循环退出时则评估为假值 。