Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan Utama Antara Penentu Format `%i` dan `%d` dalam `printf` dan `scanf` C?

Apakah Perbezaan Utama Antara Penentu Format `%i` dan `%d` dalam `printf` dan `scanf` C?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-03 00:44:09582semak imbas

What's the Key Difference Between `%i` and `%d` Format Specifiers in C's `printf` and `scanf`?

Memahami Perbezaan Antara Penentu Format %i dan %d

Apabila menggunakan fungsi input/output terformat seperti printf dan scanf, penentu format memainkan peranan yang penting peranan dalam mengawal jenis data yang akan dicetak atau dibaca. Antaranya, penentu %d (integer) dan %i (integer) memerlukan pertimbangan yang teliti.

Penggunaan dalam printf

Untuk operasi output, tiada perbezaan fungsi antara %d dan %i. Kedua-duanya akan mengeluarkan integer perpuluhan yang ditandatangani. Sebagai contoh, menggunakan sama ada %d atau %i dengan nilai integer 100 akan menghasilkan rentetan "100".

Penggunaan dalam scanf

Walau bagaimanapun, perbezaan antara %d dan %i menjadi jelas dalam operasi input. Semasa %d mengimbas integer perpuluhan yang ditandatangani dengan ketat, %i menyokong format perpuluhan, perenambelasan dan perlapanan.

  • Perpuluhan (lalai): Kedua-dua %d dan %i akan menerima jujukan digit perpuluhan (cth., 123, -45).
  • Heksadesimal: %i membenarkan input dalam format perenambelasan jika diawali dengan "0x" (mis., 0x123). Sebaliknya, %d akan menganggap "0x" sebagai sebahagian daripada rentetan integer.
  • Oktal: Begitu juga, %i menyokong input oktal jika diawali dengan "0" (mis., 033 ). Sebaliknya, %d akan mentafsirkan "033" sebagai integer perpuluhan.

Untuk menggambarkan perbezaan, pertimbangkan contoh berikut:

scanf("%i", &number);

Jika pengguna memasukkan "033" , %i akan mentafsirkannya sebagai nombor perlapanan dan memberikan nilai 27 kepada 'nombor' pembolehubah, manakala %d akan menetapkan 33.

Atas ialah kandungan terperinci Apakah Perbezaan Utama Antara Penentu Format `%i` dan `%d` dalam `printf` dan `scanf` C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn