Depois de ler características ocultas e Dark Corners de C ++ / STL on comp.lang.c++.moderated
, I foi completamente surpreso que o seguinte trecho compilado e trabalhou em ambos os Visual Studio 2008 e G ++ 4.4.
Aqui está o código:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
Resultado:
9 8 7 6 5 4 3 2 1 0
Eu diria que este é C, pois também funciona no GCC. De onde isso é definido no padrão e de onde veio?
#define upto ++<
, #define downto -->
. Se você está se sentindo mal, você pode fazer #define for while(
e #define do ) {
(e #define done ;}
) e escrever for x downto 0 do printf("%d\n", x) done
Oh, a humanidade ...
++
ou--
antes ...