Después de leer las características ocultas y oscuras esquinas de C ++ / STL sobre comp.lang.c++.moderated
, me sorprendió por completo que el siguiente fragmento compila y se trabajó tanto en Visual Studio 2008 y G ++ 4.4.
Aquí está el código:
#include <stdio.h>
int main()
{
int x = 10;
while (x --> 0) // x goes to 0
{
printf("%d ", x);
}
}
Salida:
9 8 7 6 5 4 3 2 1 0
Supongo que esto es C, ya que también funciona en GCC. ¿Dónde se define esto en el estándar y de dónde viene?
#define upto ++<
, #define downto -->
. Si te sientes malvado, puedes hacerlo #define for while(
y #define do ) {
(y #define done ;}
) y escribir for x downto 0 do printf("%d\n", x) done
Oh, la humanidad ...
++
o--
antes ...