Tamsayılar
Önceki XX. Oylum - Aritmetik İşlevleri Sonraki
Tamsayılar
C dilinde çeşitli tamsayı veri türleri tanımlanmıştır: tamsayı, küçük tamsayı, büyük tamsayı ve karakter; bunların her birinin işaretli ve işaretsiz türleri vardır. GNU C derleyici dili bunlara çok büyük tamsayıları da katarak kapsamı genişletir.
C tamsayı türleri, yapısal bakımdan farklı veri genişliklerine (sözcük genişlikleri) sahip makineler arasında kodun taşınabilirliğini mümkün kılmak amacıyla tasarlanmıştır. Bu sorun, yazılımların hangi makinede çalışacağından bağımsız olarak, çoğunlukla belli tamsayı aralıklarına ihtiyaç duyacak şekilde, kimi zaman da belli bir saklama alanı gerektirecek şekilde geliştirilmesi gerekliliğinden kaynaklanır.
Bu soruna yanıt olarak, GNU C kütüphanesi ihtiyaçlarınıza uygun olarak bildirebileceğiniz C tür tanımları içerir. Çünkü GNU C kütüphanesinin başlık dosyaları belli bir makineye özel duruma getirilebilir, böylece yazılımınızın kaynak kodunda bunları bulundurmak zorunda kalmazsınız.
Bu tür tanımları, yani typedef'ler stdint.h başlık dosyasında bildirilmiştir.
Tam olarak N bitlik genişliğe sahip bir tamsayıya ihtiyacınız varsa, bit sayısı bakımından belli genişliklere ve işaretliliğe sahip aşağıdaki türlerden size uygun olan birini kullanın:
  • int8_t
  • int16_t
  • int32_t
  • int64_t
  • uint8_t
  • uint16_t
  • uint32_t
  • uint64_t
Eğer C derleyiciniz ya da hedef makine bu tamsayı genişliklerinden bazılarına izin vermiyorsa bunların eşdeğeri olan veri türleri bulunmayacaktır.
Eğer, belirli bir saklama alanına ihtiyacınız varsa ama en küçük veri yapısının en azından (at least) N bitlik olmasını istiyorsanız bunlardan birini kullanın:
  • int_least8_t
  • int_least16_t
  • int_least32_t
  • int_least64_t
  • uint_least8_t
  • uint_least16_t
  • uint_least32_t
  • uint_least64_t
Eğer belirli bir saklama alanından ziyade en azından N bitlik genişlik yanında en hızlı (fast) erişime sahip (ya da daha küçük olanı ile aynı erişim hızına sahip) veri yapılarına ihtiyacınız varsa bunlardan birini kullanın:
  • int_fast8_t
  • int_fast16_t
  • int_fast32_t
  • int_fast64_t
  • uint_fast8_t
  • uint_fast16_t
  • uint_fast32_t
  • uint_fast64_t
Eğer, platformun destekleyebildiği en büyük tamsayı genişliğini istiyorsanız, aşağıdakilerden birini kullanın. Bunları kullandığınız takdirde yazılımınızdaki değişken boyutlarında ve tamsayı aralıklarında bunları hesaba katmalısınız.
  • intmax_t
  • uintmax_t
GNU C kütüphanesi ayrıca, her tamsayı veri türü için olası asgari ve azami değerleri içeren makrolar içerir. Bu makro isimlerine bazı örnekler: INT32_MAX, UINT8_MAX, INT_FAST32_MIN, INT_LEAST64_MIN, UINTMAX_MAX, INTMAX_MAX, INTMAX_MIN. İşaretsiz tamsayı türlerin olası en küçük değerleri daima sıfır olduğundan bunlar için makrolar tanımlanmamıştır.
C'nin yerleşik tamsayı türleri ile kullanmak için C derleyiciniz ile gelen benzer makrolar vardır. Bunlardan Veri Türü Ölçüleri bölümünde bahsedilmiştir.
Bu veri türlerinin saklandığı alanı bayt cinsinden öğrenmek için C'nin sizeof işlevini kullanabileceğinizi unutmayın.
Önceki Üst Ana Başlık Sonraki
XX. Oylum - Aritmetik İşlevleri Başlangıç Tamsayı Bölme
Bir Linux Kitaplığı Sayfası