Dopo aver letto funzioni nascoste e angoli bui della C ++ / STL su comp.lang.c++.moderated
, ero completamente sorpreso che il seguente frammento compilato e ha lavorato sia in Visual Studio 2008 e G ++ 4.4.
Ecco il codice:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
Produzione:
9 8 7 6 5 4 3 2 1 0
Suppongo che questo sia C, dal momento che funziona anche in GCC. Da dove viene definito questo standard e da dove proviene?
#define upto ++<
, #define downto -->
. Se ti senti male, puoi fare #define for while(
e #define do ) {
(e #define done ;}
) e scrivere for x downto 0 do printf("%d\n", x) done
Oh, l'umanità ...
++
o--
prima ...