Après avoir lu les fonctions cachées et coins sombres de C ++ / STL sur comp.lang.c++.moderated
, j'ai été complètement surpris que le suivant extrait compilé et a travaillé dans Visual Studio 2008 et G ++ 4.4.
Voici le code:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
Production:
9 8 7 6 5 4 3 2 1 0
Je suppose que c'est C, car cela fonctionne également dans GCC. D'où cela est-il défini dans la norme et d'où vient-il?
#define upto ++<
, #define downto -->
. Si vous vous sentez mal, vous pouvez le faire #define for while(
et #define do ) {
(et #define done ;}
) et écrire for x downto 0 do printf("%d\n", x) done
Oh, l'humanité ...
++
ou l' autre ou--
avant ...