在阅读了comp.lang.c++.moderated
上的Hidden Features and Dark Corners of C++/STL后,我完全惊讶地发现以下代码片段在Visual Studio2008和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中也可以工作。这是在标准中定义的,它来自哪里?
发布于 2012-01-18 19:18:08
或者为了一些完全不同的东西。x
幻灯片到0
。
while (x --\
\
\
\
> 0)
printf("%d ", x);
不是很数学,但是..。每一幅画都描绘了千言万语。
发布于 2009-10-29 16:38:09
这是一个非常复杂的运算符,因此即使是ISO/IEC JTC1 (Joint Technical Committee 1)也将其描述放在C++标准的两个不同部分中。
开玩笑的是,它们是两个不同的运算符:--
和>
,分别在C++03标准的§5.2.6/2和§5.9中描述。
发布于 2014-12-28 08:32:04
x
可以在相反的方向上更快地归零:
int x = 10;
while( 0 <---- x )
{
printf("%d ", x);
}
8 6 4 2
你可以用箭头控制速度!
int x = 100;
while( 0 <-------------------- x )
{
printf("%d ", x);
}
90 80 70 60 50 40 30 20 10
;)
https://stackoverflow.com/questions/1642028
复制相似问题