Rumah >pembangunan bahagian belakang >C++ >Mengapa C Melarang Membandingkan Penunjuk dan Integer?

Mengapa C Melarang Membandingkan Penunjuk dan Integer?

Linda Hamilton
Linda Hamiltonasal
2024-10-28 08:15:02969semak imbas

Why Does C   Forbid Comparing Pointers and Integers?

Ralat Pengkompil: Larangan ISO C terhadap Perbandingan Penunjuk-Integer

Semasa bereksperimen dengan fungsi ringkas daripada buku teks C Bjarne Stroustrup, pembangun kerap menghadapi ralat penyusunan: "ISO C melarang perbandingan antara penunjuk dan integer." Ralat ini berpunca daripada perbandingan antara penuding dan integer.

Satu contoh isu ini timbul apabila membandingkan input aksara kepada rentetan "y". Dalam kod yang disediakan:

<code class="cpp">#include <iostream>
#include <string>
using namespace std;
bool accept()
{
    cout << "Do you want to proceed (y or n)?\n";
    char answer;
    cin >> answer;
    if (answer == "y") return true;
    return false;
}</code>

Ralat berlaku kerana kod mentakrifkan jawapan sebagai aksara (char), manakala "y" ialah literal rentetan. Untuk menyelesaikan masalah ini, anda mempunyai dua pilihan:

  1. Tukar rentetan literal kepada aksara: Gunakan jawapan == 'y' untuk membandingkan input aksara kepada aksara 'y' .
  2. Gunakan rentetan dan bukannya aksara: Isytiharkan jawapan sebagai rentetan (jawaban rentetan;) dan kemudian bandingkan dengan rentetan "y".

Kedua-dua penyelesaian menangani sekatan pengkompil dengan memastikan anda membandingkan penuding kepada integer dengan penuding kepada integer lain atau penuding kepada rentetan.

Atas ialah kandungan terperinci Mengapa C Melarang Membandingkan Penunjuk dan Integer?. 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