Saltar al contenido

¿Cuál es la diferencia entre LONG float y double en C++?

Siéntete libre de divulgar nuestro espacio y códigos en tus redes, apóyanos para hacer crecer nuestra comunidad.

Solución:

No hay tal tipo como long float dentro de mi conocimiento.

Esta publicación le brinda información sobre por qué las personas usan lf imprimir double con printf si esta es la causa de su confusión.

Por cortesía de @Jerry Coffin:

“%f” es el (o al menos “a”) formato correcto para un doble. No hay formato para un flotador, porque si intenta pasar un flotante a printf, se promocionará a doble antes de que printf lo reciba. “%lf” también es aceptable según el estándar actual: se especifica que la l no tiene ningún efecto si va seguida del especificador de conversión f (entre otros).

Así que la razón es que cuando la gente hace:

 printf("The number is %lf", number);

Es equivalente a hacer:

printf("The number is %f", number); //l has no effect when printing double

printf los nombres de los especificadores no tienen nada en común con los nombres de los tipos.

Solo se nombran de esa manera para que sean breves y fáciles de recordar.

flotante -> doble -> largo doble

%f -> %lf -> %lf

(Además, no podían nombrar printf especificador doble como %d porque ese nombre ya está reservado para la representación decimal de int (en comparación con octal %o))

La respuesta de @taocp explica por qué puedes usar ambos %f y %lf con printfpero tenga en cuenta que no puede hacerlo con scanf

los long float es un tipo de primera edición de K&R C que existió. es sinónimo de double.

Después del primer estándar C89/C90, long float es removido. No está en desuso. C89/C90 es también la segunda edición de K&R C. Luego está la enmienda multilingüe conocida como C94/C95 que agrega wchar_tasí como funciones como .

Muchas características de la primera edición de K&R C están obsoletas pero no se eliminan hasta el segundo C99 estándar. Se elimina el tipo de retorno automático a int y el tipo de parámetro predeterminado a int y double se elimina de C99. El estándar C99 requiere un prototipo de función, no una declaración de función, es decir int function_declaration(); contra int function_prototype(void);. También eliminó el prototipo de estilo K&R C.

// implicit int type
main(argc, argv)
char ** argv;

// explicit int type
int main(argc, argv)
int argc;
char ** argv;

C++ comenzó mucho antes de que se estandarizara C. Las plantillas se estandarizaron en 1983, lo que dificulta la compilación en código C. No se estandarizó hasta 1998. Los compiladores antiguos pueden haber desaprobado características antiguas que se eliminan con compiladores más contemporáneos. los %lf es un legado de long float eso se traslada a la biblioteca estándar de C.

valoraciones y reseñas

Si crees que ha resultado de ayuda nuestro post, sería de mucha ayuda si lo compartes con el resto programadores así nos ayudas a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *