ISO / IEC 9899: 2018'de (C18) 7.20.1.3'te belirtilmiştir:
7.20.1.3 En hızlı minimum genişlikli tamsayı türleri
1 Aşağıdaki türlerin her biri, en az belirtilen genişliğe sahip tüm tamsayı türleri arasında çalışmak için genellikle en hızlı olan bir tamsayı türünü belirtir 268) .
2 typedef adı
int_fastN_t
, genişliği en az N olan en hızlı imzalı tamsayı türünü belirtir . Typedef adı , en az N genişliği olan enuint_fastN_t
hızlı işaretsiz tamsayı türünü belirtir.3 Aşağıdaki türler gereklidir:
int_fast8_t
,int_fast16_t
,int_fast32_t
,int_fast64_t
,uint_fast8_t
,uint_fast16_t
,uint_fast32_t
,uint_fast64_t
Bu formun diğer tüm türleri isteğe bağlıdır.
268) Belirlenen türün her amaç için en hızlı olduğu garanti edilmez; uygulamanın bir türü diğerine göre seçmek için net bir temeli yoksa, yalnızca imza ve genişlik gereksinimlerini karşılayan bir tamsayı türü seçecektir.
Ancak bu "hızlı" tamsayı türlerinin neden daha hızlı olduğu belirtilmemiştir.
- Bu hızlı tamsayı türleri neden diğer tamsayı türlerinden daha hızlı?
Soruyu C ++ ile etiketledim, çünkü hızlı tamsayı türleri C ++ 17'de başlık dosyasında da mevcut cstdint
. Ne yazık ki, ISO / IEC 14882: 2017'de (C ++ 17) açıklamaları hakkında böyle bir bölüm yoktur; Bu bölümü soru gövdesinde başka türlü uygulamıştım.
Bilgi: C dilinde, başlık dosyasında bildirilir stdint.h
.
typedef
ifadelerdir. Yani tipik olarak , standart kütüphane düzeyinde yapılır. Onlar ne Tabii ki, C standart koyar hiçbir sınırlama typedef
böylece örneğin tipik bir uygulama yapmaktır - için int_fast32_t
bir typedef
bir int
32 bit sistemde, ama varsayımsal bir derleyici olabilir örneğin bir uygulamaya __int_fast
içsel tipi ve bazı fantezi yapmak için söz bu türdeki değişkenler için duruma göre en hızlı makine türünü seçmek için yapılan optimizasyonlar ve daha sonra kütüphane bunu yapabilir typedef
.