c++ - valor - ¿cuál de las siguientes cadenas es un nombre de variable válido ?
¿Cuál es el sufijo C++ para literales dobles largos? (3)
Del Estándar C ++
El tipo de un literal flotante es doble a menos que se especifique explícitamente por un sufijo. Los sufijos f y F especifican float, los sufijos l y L especifican long double.
Es interesante comparar con el párrafo correspondiente de la Norma C. En C se usa un término floating constant
lugar de floating literal
en C ++:
4 Una constante flotante unsuffixed tiene un tipo double. Si tiene el sufijo por la letra f o F, tiene tipo float. Si tiene el sufijo por la letra l o L, tiene un tipo largo doble
En C ++ (y C), un literal de punto flotante sin sufijo se predetermina a double
, mientras que el sufijo f
implica un float
. Pero, ¿cuál es el sufijo para obtener un long double
?
Sin saber, definiría, por ejemplo,
const long double x = 3.14159265358979323846264338328;
Pero mi preocupación es que la variable x
contiene menos bits significativos de 3.14159265358979323846264338328
que 64, porque este es un double
literal. ¿Está justificada esta preocupación?
El sufijo C es L
Sospecho fuertemente que es lo mismo para C ++.
Tu preocupación está justificada. Su literal primero se convertiría en un double
, y por lo tanto se truncaría, y luego se convertiría en long double
.
Su preocupación es válida y debe usar un sufijo L
para doble literal largo.