Rumah > Artikel > pembangunan bahagian belakang > Mengapakah Saya Mendapat \"Ralat Penyusunan: ISO C Melarang Perbandingan Antara Penunjuk dan Integer\"?
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!