[pyar] Int anti-intuitivo
Roberto Alsina
ralsina en netmanagers.com.ar
Mie Nov 17 18:08:43 ART 2010
On Wednesday 17 November 2010 17:18:21 Tordek wrote:
> strtold está declarado en stdlib (mirá man 3 strtold); printf en
> stdio. string.h quedó por una prueba que hice y lo dejé puesto.
Sí, lo sé. Es que normalmente al no poner los std*.h normalmente las cosas o
andan o dan error, es la primera vez que me anda mal :-D
> Compila porque, al no haber declaración, crea automáticamente una
> (de tipo int strtold([...]), donde [...] es lo que le hayas pasado
> la primera vez que lo llamaste).
>
> Lo del número raro se puede ver más pasando por asm: el caso
> incorrecto tiene una llamada a cvtsi2sd, que "transforma un entero
> en un float". Con eso comprobamos que la declaración implícita de
> strtold devuelve un int. Entonces tenemos un patrón de bits que
> representa un long double, metido en un int (y truncado). Después de
> eso se llama a printf, y algún rastro de ese número pudo haber
> quedado metido en algún registro intermedio.
>
> Así que, en resumen... demonios nasales.
Indeed!
More information about the pyar
mailing list