Tamsayı Dönüşümleri
Önceki Biçimli Çıktı Sonraki
Tamsayı Dönüşümleri
Bu bölümde %d, %i, %o, %u, %x ve %X dönüşüm belirteçleri ile kullanılan seçenekler açıklanmıştır. Bu dönüşümler tamsayıları çeşitli biçimlerde basmak için kullanılır.
%d ve %i belirteçlerinin herikisi de bir işaretsiz ondalık sayı olarak; %o, %u ve %x belirteçleri sırasıyla işaretsiz sekizlik, onluk ve onaltılık sayı olarak basılır. %X belirteci %x belirteci ile aynı olmakla beraber, abcdef karakterleri yerine ABCDEF karakterlerini kullanır.
Aşağıdaki im karakterleri anlamlıdır:
-
Alan içinde sonucu sola yanaştırır (normalde sağa yanaştırılır).
+
İşaretli %d ve %i belirteçleri için değer pozitifse artı işareti basar.
(boşluk karakteri)
İşaretli %d ve %i belirteçleri için sonuç bir artı ya da eksi işareti içermiyorsa işaret yerine bir boşluk basar. + im karakteri belirtilmişse sonuç mutlaka bir işaret içerir. Hem + hem de boşluk karakteri belirtilmişse boşluk yoksayılır.
#
%o belirteci için sayının hassasiyeti arttırılmış gibi 0 ile öncelenmesini sağlar. %x veya %X için sırasıyla 0x veya 0X ile öncelenmesini sağlar. %d, %i veya %u için kullanışlı hiçbir şey yapmaz. Bu imin kullanılması strtoul (Tamsayıların Çözümlenmesi) tarafından ve scanf işlevinin %i dönüşümü (Sayısal Girdi Dönüşümleri) ile çözümlenen çıktıyı üretir.
'
LC_NUMERIC kategorisi için yerel tarafından belirtildiği gibi sayıyı gruplara ayırır. Bu im bir GNU oluşumudur. Bkz. Soysal Sayısal Biçimleme Parametreleri.
0
Alanda boş kalan yerleri boşluk yerine sıfırlarla doldurur. Sıfırlar işaretten ya da taban belirtecinden sonra konur. Bu imle birlikte - imi ya da hassasiyet belirtilmişse bu im yoksayılır.
Bir hassasiyet belirtilmişse, görüntülenecek hane sayısıdır ve gerekliyse baştaki sıfırlar üretilir. Hassasiyet belirtilmişse sayı olduğu gibi basılır. Açıkça belirterek sıfır hassasiyetle bir sıfır değeri dönüştürmek isterseniz hiçbir karakter üretilmez.
Bir tür değiştirici olmaksızın, karşı düşen argüman bir int (işaretli %i ve %d dönüşümleri için) ya da unsigned int (işaretsiz %o, %u, %x ve %X dönüşümleri için) olarak ele alınır. printf ve arkadaşları değişkin işlevler olduklarından char ve short argümanlar öntanımlı argüman terfileri tarafından özdevinimli olarak int türüne dönüştürülür. Diğer tamsayı türleri için aşağıdaki tür değiştiricilerini kullanabilirsiniz:
hh
Argümanın duruma göre signed char veya unsigned char olarak yorumlanacağını belirtir. Öntanımlı argüman terfileri çerçevesinde char türünden bir değer int veya unsigned int türüne terfi ettirilir. Ancak hh tür değiştiricisi onu tekrar char türüne çevirir.
Bu değiştirici ISO C99'da tanımlanmıştır.
h
Argümanın duruma göre short int veya unsigned short int olarak yorumlanacağını belirtir. Öntanımlı argüman terfileri çerçevesinde short türünden bir değer int veya unsigned int türüne terfi ettirilir. Ancak h tür değiştiricisi onu tekrar short türüne çevirir.
j
Argümanın duruma göre intmax_t veya uintmax_t olarak yorumlanacağını belirtir.
Bu değiştirici ISO C99'da tanımlanmıştır.
l
Argümanın duruma göre long int veya unsigned long int olarak yorumlanacağını belirtir. İki l karakteri biraz aşağıda açıklanan L değiştiricisine benzer.
Bir %c veya %s belirteci ile birlikte kullanılmışsa argüman bir geniş karakter veya bir geniş karakter dizgesi olarak yorumlanır. l değiştiricisinin bu kullanımı ISO C90 1. düzeltmesinde tanımlanmıştır.
L, ll, q
Argümanın long long int türünde yorumlanacağını belirtirler. (Bu tür GNU C derleyicisi tarafından desteklenen bir oluşumdur. Fazla uzun tamsayıları desteklemeyen sistemlerde bu değiştirici long int olarak değerlendirilir.)
q değiştiricisi 4.4 BSD’den gelmektedir. Bir long long int kimi zaman "quad" int olarak da isimlendirilir.
t
Argümanın ptrdiff_t türünde yorumlanacağını belirtir.
Bu değiştirici ISO C99'da tanımlanmıştır.
z, Z
Argümanın size_t türünde yorumlanacağını belirtirler.
z değiştiricisi ISO C99'da tanımlanmıştır. Z ise bu eklemeden önceki bir GNU oluşumudur ve yeni kodlarda kullanılmamalıdır.
Aşağıda bir şablon dizgesi örneği vardır:
"|%5d|%-5d|%+5d|%+-5d|% 5d|%05d|%5.0d|%5.2d|%d|\n"
%d için farklı seçeneklerin kullanıldığı bu dizge aşağıdaki sonuçları verir:
|    0|0    |   +0|+0   |    0|00000|     |   00|0|
|    1|1    |   +1|+1   |    1|00001|    1|   01|1|
|   -1|-1   |   -1|-1   |   -1|-0001|   -1|  -01|-1|
|100000|100000|+100000|+100000| 100000|100000|100000|100000|100000|
Son satırda en küçük alan genişliğine sığmayan bir sayı belirtilmiş olduğuna dikkat ediniz.
Aşağıda ise işaretsiz tamsayılar çeşitli biçim seçenekleri ile kullanılmıştır:
"|%5u|%5o|%5x|%5X|%#5o|%#5x|%#5X|%#10.8x|\n"
|    0|    0|    0|    0|    0|    0|    0|  00000000|
|    1|    1|    1|    1|   01|  0x1|  0X1|0x00000001|
|100000|303240|186a0|186A0|0303240|0x186a0|0X186A0|0x000186a0|
Önceki Üst Ana Başlık Sonraki
Çıktı Dönüşüm Belirteçlerinin Listesi Başlangıç Gerçek Sayı Dönüşümleri
Bir Linux Kitaplığı Sayfası