Po przeczytaniu ukrytych funkcji i zakamarkach C ++ / STL na comp.lang.c++.moderated
, byłem całkowicie zaskoczony, że następujący fragment skompilowany i pracował zarówno w Visual Studio 2008 i G ++ 4.4.
Oto kod:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
Wynik:
9 8 7 6 5 4 3 2 1 0
Zakładam, że to C, ponieważ działa również w GCC. Gdzie jest to zdefiniowane w standardzie i skąd ono pochodzi?
#define upto ++<
, #define downto -->
. Jeśli czujesz się źle, możesz zrobić #define for while(
i #define do ) {
(i #define done ;}
) napisać for x downto 0 do printf("%d\n", x) done
Och, ludzkość ...
++
albo--
wcześniej ...