Apa perbedaan antara %d
dan %i
ketika digunakan sebagai penentu format printf
?
202
Mereka sama ketika digunakan untuk output, misalnya dengan printf
.
Namun, ini berbeda ketika digunakan sebagai input specifier misalnya dengan scanf
, di mana %d
memindai bilangan bulat sebagai angka desimal yang ditandatangani, tetapi secara %i
default menjadi desimal tetapi juga memungkinkan heksadesimal (jika didahului oleh 0x
) dan oktal (jika didahului oleh 0
).
Jadi 033
akan dengan 27 %i
tetapi dengan 33 %d
.
printf
danscanf
.Ini identik untuk
printf
tetapi berbeda untukscanf
. Untukprintf
, keduanya%d
dan%i
menunjuk bilangan bulat desimal yang ditandatangani. Forscanf
,%d
dan%i
juga berarti bilangan bulat bertanda tetapi%i
memasukkan input sebagai angka heksadesimal jika didahului oleh0x
dan oktal jika didahului oleh0
dan menafsirkan input sebagai desimal.sumber
Tidak ada perbedaan antara penspesifikasi format
%i
dan%d
untukprintf
. Kita bisa melihat ini dengan pergi ke standar rancangan C99 Bagian7.19.6.1
Fungsi fprintf yang juga mencakupprintf
sehubungan dengan format specifiers dan mengatakan dalam ayat 8 :dan termasuk peluru berikut:
Di sisi lain untuk
scanf
perbedaan,%d
asumsikan basis 10 sementara%i
otomatis mendeteksi basis. Kita dapat melihat ini dengan masuk ke bagian7.19.6.2
Fungsi fscanf yang mencakupscanf
sehubungan dengan format specifier, dalam paragraf 12 dikatakan:dan termasuk yang berikut ini:
sumber
Tidak ada di
printf
- keduanya sinonim.sumber
scanf()
format string seperti jawaban yang diterima mengatakan.