После прочтения скрытых объектов и темные углы C ++ / STL на comp.lang.c++.moderated
, я был полностью удивлен , что следующий фрагмент кода компилируется и работает как в Visual Studio 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, так как он работает и в GCC. Где это определено в стандарте и откуда оно взято?
#define upto ++<
, #define downto -->
. Если вы чувствуете зло, вы можете сделать #define for while(
и #define do ) {
(и #define done ;}
) и написать for x downto 0 do printf("%d\n", x) done
о, человечество ...
++
или--