Rumah >pembangunan bahagian belakang >C++ >%i lwn. %d dalam I/O Terformat C: Apakah Perbezaannya?
IO yang diformatkan dengan %i dan %d: Perbandingan Terperinci
Apabila menggunakan fungsi IO terformat seperti printf dan scanf, memahami perbezaan yang ketara antara penentu format adalah penting. Dua penentu biasa, %d dan %i, boleh membawa kepada kekeliruan jika gelagat berbeza mereka tidak difahami sepenuhnya.
Output: Kefungsian Sama
Jika %i dan % d digunakan untuk tujuan output (iaitu, dalam printf), tidak ada perbezaan yang ketara antara mereka. Kedua-dua penentu akan menghasilkan keluaran yang sama, sama ada perpuluhan, perenambelasan atau perlapanan.
Input: Di Mana Perbezaan Muncul
Walau bagaimanapun, apabila menggunakan penentu ini untuk input (iaitu, dalam scanf), perbezaan yang jelas timbul. %d mentafsir input sebagai integer dalam format perpuluhan yang ditandatangani. Ini bermakna nombor seperti -512 akan dikenali dengan betul dan diberikan nilai negatif.
Sebaliknya, %i lalai kepada tafsiran perpuluhan tetapi menunjukkan sifat yang lebih fleksibel. Ia bukan sahaja mengendalikan integer perpuluhan tetapi juga menampung nilai perenambelasan dan perlapanan apabila didahului oleh awalan yang berkaitan. Sebagai contoh, 0x1A akan ditafsirkan sebagai nombor perenambelasan, manakala 023 akan dikenali sebagai perlapanan.
Contoh Praktikal
Pertimbangkan rentetan input "033". Jika scanf membaca ini menggunakan %d, ia akan menganggapnya sebagai integer perpuluhan 33. Walau bagaimanapun, menggunakan %i, scanf mengecam 0 di hadapan sebagai awalan perlapanan, menyebabkan integer 27 diperuntukkan kepada pembolehubah.
Kesimpulan
Ringkasnya, manakala %i dan %d melakukan yang serupa untuk output dalam fungsi IO berformat, mereka mempamerkan tingkah laku yang berbeza untuk input. %d mengehadkan input kepada nombor perpuluhan yang ditandatangani, manakala %i menawarkan lebih serba boleh dengan menampung nilai perenambelasan dan perlapanan. Memahami perbezaan ini adalah penting untuk pengendalian input yang tepat dalam program C.
Atas ialah kandungan terperinci %i lwn. %d dalam I/O Terformat C: Apakah Perbezaannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!