studio reales proyectos programacion libro introducción incluye herramientas fundamentos fuente español código con avanzado aplicaciones c obfuscation

reales - ¿Cómo funciona este programa "hola mundo!"



libro de android studio en español pdf (2)

int main(void) { return(''yes'', *"no", **main, *********printf) ("hello world!/n") *0; }

Salidas hello world! , pero ¿cómo funciona realmente?


Dos cosas realmente:

  1. Los punteros de función no se eliminan de la misma manera que otros punteros. *main == main
  2. Una lista separada por comas devuelve el valor del último elemento de la lista

Así que si simplificamos los punteros:

int main(void) { return(''yes'', *"no", main, printf) ("hello world!/n") *0; }

Y usando 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 queda como ejercicio para el lector.


(''yes'', *"no", **main, *********printf)

evaluará a *********printf , porque el operador de coma evalúa sus operandos y devuelve el valor de la última expresión. *********printf es igual a printf, ya que el puntero a la función de desreferenciación da como resultado el mismo puntero a la función; no hace nada

A continuación, el resultado del primer paréntesis, printf, se aplica a ("hello world! / N") que da como resultado 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 la función principal devuelve el producto.