, printf
tarafından alınan parametreler tip int
olacaktır. Her şeyden
İlk olarak, (ilk parametre hariç) printf geçmesi şey char
ve short
hem geçirilmeden önce int
terfi ki (diğer şeylerin yanı sıra) anlamına gelen "varsayılan promosyonları", uğrar. Yani, gerçekten ne geçiyor olsaydınız bile tip char vardı, o zaman printf
için var int
tip olurdu. Durumunuzda zaten zaten int
türüne sahip bir karakter literal kullanıyorsunuz.
aynı scanf ile doğrudur ve variadic parametreleri almak diğer fonksiyonlar.
bir tamsayı karakter sabiti tipi int olmalıdır: hatta varsayılan promosyonlar olmadan
İkincisi, C karakter değişmezleri zaten yine tipini int
(§6.4.4.4/10) sahiptir.
Yani, bu durumda değerler tip int
ile başlar ve terfi değildir - ama sen char
s, gibi bir şey ile başladı bile: printf
alan da ondan
char a = 'a';
printf("%d", a);
... int
tipinde, char
türünde değil. C
olarak
% d imzalı bir tam sayıdır, ilgili baytların sayısı hakkında hiçbir şey söylemez ... – leppie
@leppie: Ancak, belirli bir sayıda bayttan geçirilmesi gerekir ve printf'in belirli bir sayıyı seçmek zorundadır. Bunun için yığılmış baytlar ve bu belirli sayıların aynı olması gerekir. –
'a ',' '' '' '' '' '' '' '' tür. –