longy long intson idénticos Así son long longy long long int. En ambos casos, el intes opcional.
En cuanto a la diferencia entre los dos conjuntos, el estándar C ++ exige rangos mínimos para cada uno, y eso long longes 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 intes 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, longpor sí solo no es un tipo ni un modificador como plantea su pregunta, es simplemente un especificador para el long inttipo. Lo mismo para long longser un especificador para el long long inttipo.
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 doubleay proporcionar un superconjunto de valores sobre ese tipo (es decir, al menos esos valores, no necesariamente más valores).