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:
- Los punteros de función no se eliminan de la misma manera que otros punteros.
*main == main
- 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.