Rumah >pembangunan bahagian belakang >C++ >Adakah `true` Sentiasa Bersamaan dengan `1` dalam Penukaran Integer Boolean C?

Adakah `true` Sentiasa Bersamaan dengan `1` dalam Penukaran Integer Boolean C?

Susan Sarandon
Susan Sarandonasal
2024-11-29 15:20:10344semak imbas

Is `true` Always Equivalent to `1` in C   Boolean-Integer Conversions?

Penukaran Boolean-Integer dalam C

Dalam bahasa pengaturcaraan C, selalunya perlu menukar antara jenis data yang berbeza. Satu penukaran biasa ialah antara nilai boolean dan integer. Timbul persoalan: bolehkah kita menganggap bahawa nilai boolean true adalah bersamaan dengan integer 1 untuk mana-mana pengkompil C?

Jawapannya

Ya, ia adalah selamat untuk diandaikan that (bool)true == (int)1 untuk mana-mana pengkompil C. Ini adalah kerana sebab berikut:

  • Promosi Sepadu: Apabila nilai boolean ditukar kepada integer, ia mengalami proses yang dipanggil promosi integral. Ini menukarkan boolean kepada int dengan nilai sama ada 0 (untuk palsu) atau 1 (untuk benar).
  • Penukaran Tersirat: Hantaran tidak diperlukan untuk penukaran ini. Pengkompil C secara automatik akan melakukan penukaran tersirat berdasarkan konteks ungkapan.

Oleh itu, ungkapan benar == 1 akan menilai kepada benar, tanpa mengira pengkompil C digunakan. Tingkah laku ini dinyatakan dalam piawai C (4.7 [conv.integral]) yang menyatakan bahawa "Jika jenis sumber ialah bool... true ditukar kepada satu."

Atas ialah kandungan terperinci Adakah `true` Sentiasa Bersamaan dengan `1` dalam Penukaran Integer Boolean 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