int main(void)
{
return('yes', *"no", **main, *********printf) ("hello world!\n") *0;
}
salidas hello world!
, pero ¿cómo funcionan realmente?¿Cómo funciona este "hola mundo!" trabajo del programa?
int main(void)
{
return('yes', *"no", **main, *********printf) ("hello world!\n") *0;
}
salidas hello world!
, pero ¿cómo funcionan realmente?¿Cómo funciona este "hola mundo!" trabajo del programa?
dos cosas: en realidad
*main == main
Así que si simplificamos los punteros:
int main(void)
{
return('yes', *"no", main, printf) ("hello world!\n") *0;
}
Y utilizando el último elemento de la lista como el valor de la lista
int main(void)
{
return printf("hello world!\n") *0;
}
printf
devuelve el número de caracteres impresos
int main(void)
{
return 13 *0;
}
Y 13 * 0 se deja como ejercicio para el lector.
Su icono de gravatar es extraño, pero sin embargo buena respuesta –
Algunos amigos míos estaban teniendo un concurso de crecimiento de bigote, y tuve que afeitarme. Así que usé un bigote falso ese día. – rampion
+1 para el ejercicio al lector;) –
('yes', *"no", **main, *********printf)
evaluará a *********printf
, porque operador coma evalúa sus operandos y devuelve el valor de la última expresión. *********printf
es igual a printf, como eliminación de referencias resultados puntero de función en el mismo puntero de función; no hace nada
A continuación, resultado del primer paréntesis, printf, se aplica a ("Hello World! \ N") que se traduce en el texto impreso en la pantalla. La función printf devuelve el número de caracteres escritos. Ese número se multiplica por 0 y el producto es devuelto por la función principal.
'return ('yes', *" no ", ** main, ********* printf) (" ¡Es mágico! \ N ") * 0;' Por cierto, lo compilé y realmente funciona ._. – Warty
¡tiene un estilo extraño para escribir software! Nunca recibirá un trabajo para mí. :-) – Oleg
C es realmente un lenguaje pervertido :-) –