Brakowało mi całej zabawy, wszystkie dobre odpowiedzi w C ++ zostały już opublikowane!
To jest najdziwniejsza rzecz, jaką mogłem wymyślić, ale nie założę się, że to legalne C99: str
#include <stdio.h>
int i = 1;
int main(int argc, char *argv[printf("%d\n", i++)])
{
return (i <= 1000) && main(argc, argv);
}
Kolejny, z odrobiną oszustwa:
#include <stdio.h>
#include <boost/preprocessor.hpp>
#define ECHO_COUNT(z, n, unused) n+1
#define FORMAT_STRING(z, n, unused) "%d\n"
int main()
{
printf(BOOST_PP_REPEAT(1000, FORMAT_STRING, ~), BOOST_PP_ENUM(LOOP_CNT, ECHO_COUNT, ~));
}
Ostatni pomysł, ten sam kod:
#include <boost/preprocessor.hpp>
#include <iostream>
int main()
{
#define ECHO_COUNT(z, n, unused) BOOST_PP_STRINGIZE(BOOST_PP_INC(n))"\n"
std::cout << BOOST_PP_REPEAT(1000, ECHO_COUNT, ~) << std::endl;
}
printf
i wydrukowanie dwóch numerów za każdym razem, prawda?