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
611 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!

sumber:php.cn
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