Rumah > pembangunan bahagian belakang > C++ > Mengapa ISO C Melarang Membandingkan Penunjuk dan Integer, dan Bagaimana Saya Boleh Membetulkan Ralat Ini dalam Kod Saya?

Mengapa ISO C Melarang Membandingkan Penunjuk dan Integer, dan Bagaimana Saya Boleh Membetulkan Ralat Ini dalam Kod Saya?

Barbara Streisand
Lepaskan: 2024-10-29 14:05:29
asal
681 orang telah melayarinya

Why Does ISO C   Forbid Comparing Pointers and Integers, and How Can I Fix This Error in My Code?

Ralat Perbandingan ISO C: Penunjuk dan Nombor Bulat

Semasa mengerjakan contoh daripada buku C Bjarne Stroustrup, sesetengah pengguna telah menemui penyusunan- ralat masa yang menunjukkan bahawa ISO C melarang perbandingan antara penunjuk dan integer. Isu ini timbul daripada perbandingan yang melibatkan pembolehubah char dan pemalar rentetan dalam fungsi accept().

Punca:

Ralat berlaku kerana ISO C melarang perbandingan langsung penuding aksara (seperti aksara*) dengan integer (seperti nilai berangka aksara yang disertakan dalam petikan berganda, cth., "y").

Penyelesaian:

Terdapat dua cara utama untuk menyelesaikan ralat ini:

  1. Pendekatan Pilihan: Menggunakan Pembolehubah Rentetan:

    • Tukar jenis jawapan kepada rentetan. Ini membenarkan perbandingan terus dengan pemalar rentetan "y", menyelesaikan isu.
    <code class="cpp">#include <iostream>
    #include <string>
    using namespace std;
    bool accept()
    {
        cout << "Do you want to proceed (y or n)?\n";
        string answer;
        cin >> answer;
        if (answer == "y") return true;
        return false;
    }</code>
    Salin selepas log masuk
  2. Pendekatan Alternatif: Menggunakan Petikan Tunggal:

    • Jika menggunakan pembolehubah aksara adalah penting, sertakan pemalar aksara dalam petikan tunggal untuk mewakili pemalar aksara.
    <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>
    Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa ISO C Melarang Membandingkan Penunjuk dan Integer, dan Bagaimana Saya Boleh Membetulkan Ralat Ini dalam Kod Saya?. 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