Rumah > pembangunan bahagian belakang > C++ > 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
Lepaskan: 2024-10-30 08:20:02
asal
395 orang telah melayarinya

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>
Salin selepas log masuk

Ralat berlaku pada baris:

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

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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