UTNianos

Versión completa: [SSL] Duda final / C
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Estoy viendo un ejercicio de un final de SSL del 9/3/2011. En el primer punto hay que detectar errores en una función programada en C. Según la resolución en el código no hay errores, pero:



void main()
{
int i = 2, *pi = &i;
printf("%.1f\\n", 1 + *pi);
}



¿(1 + *pi) no es de tipo entero? ¿No tendría que imprimirlo con %d? Por las dudas lo probé en gcc y no lo compila justamente por eso: Format specifies type "double" but the argument has type 'int'.

¿Está mal la resolución o se me está escapando algo?

(De paso, saben si cambió el programa o los ejercicios que toman en los finales? La cursé hace un par de años y no conseguí finales nuevos.)

Gracias!
Compila. Al poner %f interpreta los bytes como un float (por más que lo hayas definido como int) También podría haber puesto %p y lo imprimía como una dirección, %c y lo imprimía como un caracter, etc. Lo único que no debería poner es %s, porque entonces va a usar 3 como dirección de memoria y va a tirarle error.

#include<stdio.h>
int main(){
int i = 2, *pi = &i;

printf("%.1f\\n", 1 + *pi);

return 0;

}



Gracias! No me había dado cuenta de que el compilador me estaba dando una alerta pero igualmente lo compilaba.
URLs de referencia