Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Saya Mendapat \"Ralat Penyusunan: ISO C Melarang Perbandingan Antara Penunjuk dan Integer\"?

Mengapakah Saya Mendapat \"Ralat Penyusunan: ISO C Melarang Perbandingan Antara Penunjuk dan Integer\"?

Barbara Streisand
Barbara Streisandasal
2024-10-30 08:20:02295semak imbas

Why am I Getting a

Ralat Kompilasi: "ISO C Melarang Perbandingan Antara Penunjuk dan Integer"

Apabila cuba menyusun fungsi dalam C, anda mungkin menghadapi "ralat penyusunan: ISO C melarang perbandingan antara penunjuk dan integer." Ralat ini terhasil daripada percubaan untuk membandingkan nilai penuding dengan integer.

Isunya

Dalam coretan 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 pada baris:

<code class="cpp">if (answer == "y") return true;</code>

Di sini, jawapan pembolehubah diisytiharkan sebagai aksara, manakala rentetan literal "y" ialah rentetan. Membandingkan penuding aksara kepada literal rentetan adalah dilarang dalam ISO C , kerana ia boleh membawa kepada ralat halus.

Penyelesaian

Terdapat dua cara untuk membetulkan isu ini:

1. Tukar jawapan kepada rentetan:

<code class="cpp">string answer;</code>

Pendekatan ini diutamakan kerana ia sejajar dengan amalan terbaik C moden.

2. Gunakan petikan tunggal untuk rentetan literal:

<code class="cpp">if (answer == 'y') ...</code>

Petikan tunggal menandakan pemalar aksara, yang serasi dengan jawapan pembolehubah char.

Atas ialah kandungan terperinci Mengapakah Saya Mendapat \"Ralat Penyusunan: ISO C Melarang Perbandingan Antara 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