2012-10-17 12 views
14

Okuma this SO question, merak etmeye başladım - scanf/printf (ve ailesini) sabit boyutlu tiplerle kullanmanın doğru yolu nedir? Ben short int veya int varsaSabit boyutlu tiplerle scanf/printf (ve ailesi) kullanmak için doğru yol?

Örneğin, ben sırasıyla %hd ve %d kullanmayı tercih ediyorum - iyi.

Peki ya int16_t var? short int, int16_t'dan farklı olabilir, platform bağımlıdır. Diğer sabit boyutlu (integral) tipler için de aynı mı?


NOT: Ben "bu google deneyin vermedi" çünkü bazı aşağı oy aldı gibi görünüyor gibi, ben anlatmaya gerek benziyor: ben yapmadım Burada benzer soruya bakın, bu yüzden onu yayınladım. SO'daki soruların çoğu, burada sormak yerine Google kullanılarak yanıtlanmış olabilir. Bu, StackOverflow'u aslında değil, yer haline getirecektir.

Ve HAYIR, bunu itibar için yapmadım - şimdiden günlük itibari kapağına isabet ettim (bu soruyu göndermeden önce 24 oy almış olmak).

Benim amacım - Bu oyu hak etmiyor bence.

+1

İyi arkadaşınızı google kullanmayı unutmayın. ;) Arama yaparken bunu bir isabetle gösterdi: ["printf int16_t"] (https://www.google.com/#hl=tr&output=search&sclient=psy-ab&q=printf+int16_t&oq=printf+int16_t&gs_l=hp.3. ..741.1861.0.2073.8.7.0.0.0.0.267.267.2-1.1.0.les% 3B..0.0 ... 1c.1.7MPX56CVufA & pbx = 1 & bav = on.2, or.r_gc.r_pw.r_cp.r_qf. ve fP = ec63c9d2be74365f & BPCL = 35.277.026 ve BIW = 1343 & bh = 748). – Mike

+0

@Mike - Ben yapmadım :) Burada benzer bir soruya sahip olmanın iyi olacağını düşünüyorum (ve itibardan dolayı değil - bugün günlük itibarı kapladım (şimdiye kadar 24 adete ulaşmıştım)). Bunun oyları hak ettiğini düşünmüyorum. –

+0

+1 Düzenlemenizle uyumlu. Netleştirdiğiniz için teşekkürler. – Mike

cevap

13

doğru şekilde printf aile ve scanf ailesi, örneğin, standart makrolar tanımlar inttypes.h kullanmaktır

printf ("%" PRId16, short_int); 
scanf ("%" SCNd16, &short_int); 
+0

Harika, teşekkürler :) +1 ve kabul etti. –

+0

Bu neden% d 'den daha iyi? Kısa, int'ye dönüştürülmez mi? –

4

inttypes.h başlık dosyasında, stdint.h dosyasında tanımlanan sabit genişlikli tamsayılar için doğru format belirticileri tanımlayan makrolar bulunur. Örneğin, printf() ve int16_t için tür belirteci, PRId16 adlı makrodur. Örnek:

int16_t x; 
scanf("%" SCNd16, &x); 

printf("You have entered: %" PRId16 "\n", x); 
+1

Makrolar, gerekli olan '% 'karakterini içermez. –

+0

@ Steve-o düzeltildi. –

İlgili konular