long
und long int
sind identisch. So sind long long
und long long int
. In beiden Fällen ist das int
optional.
In Bezug auf den Unterschied zwischen den beiden Sätzen schreibt der C ++ - Standard Mindestbereiche für jeden Satz vor, und dieser long long
ist mindestens so breit wie long
.
Die steuernden Teile des Standards (C ++ 11, aber das gibt es schon lange) sind zum einen 3.9.1 Fundamental types
Abschnitt 2 (ein späterer Abschnitt enthält ähnliche Regeln für die vorzeichenlosen Integraltypen):
Es gibt fünf standardmäßige vorzeichenbehaftete Ganzzahltypen: signiertes Zeichen, kurzes int, int, langes int und langes langes int. In dieser Liste bietet jeder Typ mindestens so viel Speicherplatz wie die vorhergehenden in der Liste.
Es gibt auch eine Tabelle 9 in 7.1.6.2 Simple type specifiers
, die die "Zuordnungen" der Spezifizierer zu tatsächlichen Typen zeigt (was zeigt, dass das int
optional ist), von denen ein Abschnitt unten gezeigt wird:
Specifier(s) Type
------------- -------------
long long int long long int
long long long long int
long int long int
long long int
Beachten Sie dort den Unterschied zwischen dem Bezeichner und dem Typ. Mit dem Bezeichner teilen Sie dem Compiler mit, um welchen Typ es sich handelt. Sie können jedoch verschiedene Bezeichner verwenden, um zum selben Typ zu gelangen.
Daher long
ist es für sich genommen weder ein Typ noch ein Modifikator, wie Ihre Frage besagt, sondern lediglich ein Spezifizierer für den long int
Typ. Das Gleiche gilt für long long
die Angabe des long long int
Typs.
Obwohl der C ++ - Standard selbst nicht die Mindestbereiche integraler Typen angibt, wird C99 in 1.2 Normative references
als zutreffend angegeben. Daher gelten die in angegebenen C99 5.2.4.2.1 Sizes of integer types <limits.h>
Mindestbereiche.
In Bezug auf long double
das ist das eigentlich eher ein Gleitkommawert als eine ganze Zahl. Ähnlich wie bei den Integraltypen ist es erforderlich, mindestens so genau wie a zu sein double
und eine Obermenge von Werten über diesen Typ bereitzustellen (dh mindestens diese Werte, nicht unbedingt mehr Werte).