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
Lepaskan: 2024-12-03 00:44:09
asal
655 orang telah melayarinya

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);
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan