duda conceptual C++

Joe Cabezas joe.cabezas en gmail.com
Lun Mayo 30 03:02:28 CLT 2011


hola comunidad!

tengo la siguiente duda sobre c++, entiendo que tal vez no es un problema
relacionado directamente con linux, lo unico que tiene relacion es que para
compilar ocupo g++

quisiera saber si alguien puede ayudarme con esto, tengo las siguientes
lineas:

	float mm = 0.4;
	float nn = 2.8;
	int xx = 3;

	int c = (mm * xx + nn);

	cout << "c: " << c << endl;


si hacéis la matemática: 0.4 * 3 + 2.8 = 4
sin embargo el programa de arriba me imprime 3

en qué me equivoqué?, que esta pasando?, porqué al truncar 4, da 3?

le he comentado a un amigo (que usa ArchLinux) este problema, pero segun él,
su compilador (g++ tambien), el ejecutable imprime 4, las especificaciones
del sistema de él son:

[mario en ArchLinux Desktop]$ uname -a
Linux ArchLinux 2.6.37-ARCH #1 SMP PREEMPT Fri Mar 25 15:10:00 CET
2011 x86_64 Pentium(R) Dual-Core CPU T4400 @ 2.20GHz GenuineIntel
GNU/Linux

[mario en ArchLinux Desktop]$ g++ --version
g++ (GCC) 4.5.2 20110127 (prerelease)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


al parecer el compilador imprime cosas distintas segun el sistema, mi
sistema es un Ubuntu 11.04 y la version de g++:

joe en joe-laptop:~/Escritorio$ uname -a
Linux joe-laptop 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:50
UTC 2011 i686 i686 i386 GNU/Linux

joe en joe-laptop:~/Escritorio$ g++ --version
g++ (Ubuntu/Linaro 4.5.2-8ubuntu4) 4.5.2
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

joe en joe-laptop:~/Escritorio$ man g++ | grep 2011
gcc-4.5.2                         2011-04-18                            GCC(1)

que puedo hacer para que me imprima el resultado correcto?, podeis darme una
pista de que hice mal?, gracias!

-Joe


Más información sobre la lista de distribución Linux