long
y long int
son idénticos Así son long long
y long long int
. En ambos casos, el int
es opcional.
En cuanto a la diferencia entre los dos conjuntos, el estándar C ++ exige rangos mínimos para cada uno, y eso long long
es al menos tan amplio como long
.
Las partes de control del estándar (C ++ 11, pero esto ha existido durante mucho tiempo) son, por ejemplo 3.9.1 Fundamental types
, la sección 2 (una sección posterior proporciona reglas similares para los tipos integrales sin signo):
Hay cinco tipos de enteros con signo estándar: char firmado, short int, int, long int y long long int. En esta lista, cada tipo proporciona al menos tanto almacenamiento como los que le preceden en la lista.
También hay una tabla 9 7.1.6.2 Simple type specifiers
, que muestra las "asignaciones" de los especificadores a los tipos reales (mostrando que int
es opcional), una sección de la cual se muestra a continuación:
Specifier(s) Type
------------- -------------
long long int long long int
long long long long int
long int long int
long long int
Tenga en cuenta la distinción entre el especificador y el tipo. El especificador es cómo le dice al compilador cuál es el tipo, pero puede usar diferentes especificadores para terminar en el mismo tipo.
Por lo tanto, long
por sí solo no es un tipo ni un modificador como plantea su pregunta, es simplemente un especificador para el long int
tipo. Lo mismo para long long
ser un especificador para el long long int
tipo.
Aunque el estándar C ++ en sí mismo no especifica los rangos mínimos de los tipos integrales, sí cita C99, en 1.2 Normative references
, como aplicable. Por lo tanto, C99 5.2.4.2.1 Sizes of integer types <limits.h>
se aplican los rangos mínimos establecidos en .
En términos de long double
, eso es en realidad un valor de coma flotante en lugar de un número entero. De manera similar a los tipos integrales, se requiere tener al menos tanta precisión como double
ay proporcionar un superconjunto de valores sobre ese tipo (es decir, al menos esos valores, no necesariamente más valores).