Yanıtlar:
Çıkış için kullanıldığında aynıdır, örneğin printf
.
Bununla birlikte, bunlar giriş belirteci olarak kullanıldığında farklıdır, örneğin scanf
, %d
bir tamsayıyı işaretli ondalık sayı olarak tarar, ancak %i
varsayılan olarak ondalık sayıya sahiptir, ancak onaltılık (öncesinde gelirse 0x
) ve sekizlik (öncesinde gelirse 0
) sağlar.
Yani 033
27 ile, %i
33 ile olurdu %d
.
Bunlar için aynı, printf
ancak için farklıdır scanf
. İçin printf
, hem %d
ve %i
imzalı ondalık tamsayı belirler. İçin scanf
, %d
ve %i
ayrıca imzalı tamsayı ama anlamı %i
inteprets öncesinde eğer bir onaltılık sayı olarak girilmesi 0x
öncesinde ve eğer sekizlik 0
ve aksi ondalık olarak girdi yorumlar.
İçin %i
ve %d
format belirteçleri arasında fark yoktur printf
. Biz giderek görebilirsiniz taslak C99 standart bölümünde 7.19.6.1
fprintf fonksiyonu da kapsar printf
biçim belirteçleri açısından ve paragrafta diyor 8 :
Dönüşüm belirteçleri ve anlamları:
ve aşağıdaki madde işaretini içerir:
d,i The int argument is converted to signed decimal in the style [−]dddd. The precision specifies the minimum number of digits to appear; if the value being converted can be represented in fewer digits, it is expanded with leading zeros. The default precision is 1. The result of converting a zero value with a precision of zero is no characters.
Öte yandan scanf
, bir fark olduğu için, %d
tabanı %i
otomatik olarak algılarken taban 10'u varsayalım . Biz bölümüne giderek görebilirsiniz 7.19.6.2
fscanf fonksiyonunu kapsar scanf
paragrafta biçim belirteci ile ilgili olarak, 12 şöyle der:
Dönüşüm belirteçleri ve anlamları:
ve aşağıdakileri içerir:
d Matches an optionally signed decimal integer, whose format is the same as expected for the subject sequence of the strtol function with the value 10 for the base argument. The corresponding argument shall be a pointer to signed integer. i Matches an optionally signed integer, whose format is the same as expected for the subject sequence of the strtol function with the value 0 for the base argument. The corresponding argument shall be a pointer to signed integer.