Hola a todos. Soy nuevo en la lista, aunque llevo visitando la página de CRySOL desde hace algún tiempo. Muy buen trabajo y muy útil.
Tengo una pregunta sobre C/C++. Ya hace tiempo que intento encontrar una solución en internet, pero no la he encontrado. La cuestión es simple: ¿por qué en gcc "double" y "long double" son "iguales" (en el sentido de que tienen el mismo rango de valores)? Sé que el hecho de que el tamaño de un "long double" sea igual al de un "double" está de acuerdo con los estándares (que dicen que el tamaño de "long double" debe ser mayor _o igual_ que el de un "double", pero: 1) ocurre que sizeof(long double) es 12, mientras que sizeof(double) es 8. Esto podría tener una explicación sencilla teniendo en cuenta que gcc usa por defecto la opción "-m96bit-long-double". Pero significaría que, de esos 96 bits (12 bytes) para "long double", sólo usa 64 (8 bytes, como un double), y el resto serían ceros (?). 2) además, en "man gcc" puede leerse, donde se habla de las opciones "-m96bit-long-double" y "-m128bit-long-double", que estas opciones no modifican el tamaño de un long double, que es de 80 bits (y el resto 96 o 128, según la opción que se use, se rellena con ceros). Pero lo cierto es que no usa 80 bits (10 bytes), sino sólo 64, como si fuera un double. Esto se puede comprobar fácilmente, por ej., con estas líneas: long double a, b; a = 1e+308; b = 2e+308; Esto da para "a" un valor correcto (1e+308), y para "b" infinito (porque el límite del tipo "double" está en 1.79769e+308). Si "b" fuera _realmente_ un "long double" de 10 bytes, podría alcanzar un valor de 1.189731e+4932. ¿Alguien sabe alguna manera de solucionar este problema? Como he dicho, llevo mucho tiempo buscando por internet, pero no he encontrado una solución (si la hay). Lo cierto es que hay otros compiladores que _sí_ usan realmente "long double" de 10 bytes, por lo que me extraña que gcc (y g++) no lo hagan. (Por cierto, he probado esto con varias versiones de gcc, desde la 3.4.6 hasta la 4.2.3.) Gracias de antemano por vuestras respuestas. Un saludo. _______________________________________________ CRySoL mailing list http://crysol.inf-cr.uclm.es/ https://arco.inf-cr.uclm.es/cgi-bin/mailman/listinfo/crysol
