long
ve long int
özdeş. Yani vardır long long
ve long long int
. Her iki durumda da int
, isteğe bağlıdır.
İki set arasındaki farka gelince, C ++ standardı her biri için minimum aralıkları zorunlu kılar ve bu long long
da en azından genişliktedir long
.
Standardın kontrol parçaları (C ++ 11, ancak bu uzun zamandır var), birincisi 3.9.1 Fundamental types
, bölüm 2 (daha sonraki bir bölüm, imzasız integral türleri için benzer kurallar verir):
Beş standart imzalı tamsayı türü vardır: imzalı karakter, kısa int, int, uzun int ve uzun uzun int. Bu listede, her tür, listede öncekinden daha az depolama alanı sağlar.
Ayrıca , bir bölümü aşağıda gösterilen 7.1.6.2 Simple type specifiers
gerçek türlerle ( int
isteğe bağlı olduğunu gösteren) belirteçlerin "eşlemelerini" gösteren bir tablo 9 da vardır :
Specifier(s) Type
------------- -------------
long long int long long int
long long long long int
long int long int
long long int
Burada belirteç ve tür arasındaki farkı not edin. Belirtici, derleyiciye türün ne olduğunu nasıl söylediğinizdir, ancak aynı türden sonuç almak için farklı belirticiler kullanabilirsiniz.
Bu nedenle long
, kendi başına soru türü olarak ne bir tür ne de bir değiştirici değildir , yalnızca long int
tür için bir tanımlayıcıdır . İçin Ditto long long
için bir belirleyici olma long long int
tip.
C ++ standardının kendisi, integral türlerinin minimum aralıklarını belirtmese de 1.2 Normative references
, uygulama olarak C99'dan bahseder . Dolayısıyla, belirtilen minimum aralıklar C99 5.2.4.2.1 Sizes of integer types <limits.h>
uygulanabilir.
Açısından long double
, aslında bir kayan nokta değeri yerine bir tamsayı var. İntegral türlerine benzer şekilde, en az a kadar hassasiyete sahip olmak ve double
bu tip üzerinde bir değerlerin üst kümesini sağlamak gerekir (yani en azından bu değerler, daha fazla değer değil ).