Errore ISO proibisce il confronto tra puntatore e intero

Errore ISO proibisce il confronto tra puntatore e intero
Questo articolo parla di un errore che si verifica comunemente durante il confronto di puntatori e numeri interi. Prima di passare al nostro argomento, dovremmo sapere cos'è l'ISO. ISO sta per l'organizzazione internazionale degli standard. Questa società sviluppa e pubblica standard internazionali. Durante la programmazione in linguaggio C ++, spesso otteniamo questo errore che ISO proibisce il confronto tra puntatore e intero. Questo errore si verifica anche in altre lingue come C lingua. La domanda principale sorge sul perché l'ISO non consente confronti tra puntatori e numeri interi.

La risposta è che nel linguaggio C ++ Quando un programmatore cerca di confrontare due diversi dati, il sistema lancerà l'errore di confronto. Quindi, un numero intero è un tipo di dati diverso e un puntatore è un indirizzo di memoria. Pertanto, il compilatore darà un errore perché entrambi sono diversi dati. Questo errore non si verifica solo durante il confronto di puntatori e numeri interi, ma si verifica ogni volta che proviamo a confrontare due variabili di diversi dati.

Sintassi

È un messaggio di errore in modo che non abbia alcuna sintassi ma possiamo mostrarti come appare questo errore:

Errore: ISO C ++ proibisce il confronto tra puntatore e intero [-fpermissive]

Esempio # 01:

Ora, per comprendere l'errore in profondità, eseguiremo un esempio in cui confronteremo la nostra variabile con un tipo di dati diverso e vedremo se il sistema lancia o meno errori. A tale scopo, abbiamo dichiarato un array di caratteri chiamato "X" con una lunghezza di 5. Abbiamo stampato i nostri messaggi per la leggibilità dell'utente. Ora, se diamo un'occhiata al numero 4 della riga, vedremo che stiamo confrontando la nostra variabile con la parola "ciao". Lo scopo del nostro codice è se i valori della nostra variabile e del valore passano corrispondono. Il compilatore dovrebbe entrare all'interno della condizione if. Successivamente, il compilatore tornerà (0) e uscirà correttamente dal nostro codice. Ora, eseguiamo il nostro codice.

#includere
Utilizzo dello spazio dei nomi std;
Char X [5];
cout x;
if (x == 'Hello')

cout<<"Hi How are You";

restituzione (0);

Dopo aver eseguito il nostro codice, otterremo il seguente errore dal nostro compilatore di conseguenza. Se esaminiamo da vicino il messaggio di errore, possiamo vedere che il compilatore ha sottolineato un errore nella riga 7. Questa è la linea in cui stavamo cercando di confrontare la nostra variabile con un valore "ciao". Il compilatore prende stringhe o personaggi in doppie citazioni come ("ciao"). Ma qui abbiamo superato il valore in preventivi singoli come ("ciao"). Quindi, i dati dei dati non corrispondono e il compilatore riconosce il nostro valore passato come puntatore. Per questo motivo, il compilatore non sarà in grado di fare un confronto tra loro e lancerà un errore che possiamo vedere nella figura seguente in colore rosso.

Ora, proviamo a risolvere l'errore ed eseguiamo correttamente il nostro codice. A tale scopo, nel nostro caso, dovremo solo cambiare il valore passato da "ciao" a "ciao" in modo che il sistema lo riconosca come un personaggio. Modificheremo semplicemente le citazioni singole con doppie citazioni. Dopodiché, eseguiremo il nostro codice.

Dopo aver eseguito il nostro codice, la figura sopra è come sarà il nostro output. Il compilatore ha eseguito correttamente il nostro codice e stampato ciò che gli abbiamo chiesto di stampare. Successivamente, ci mostra il messaggio che il programma si è concluso con il codice di uscita 0 perché alla fine abbiamo restituito 0 dalla nostra funzione principale. Quindi, possiamo vedere che passando solo il tipo di dati corretto, abbiamo risolto il nostro problema.

Esempio # 02:

Nell'esempio precedente, abbiamo spiegato come il compilatore lancia un errore. Ma non abbiamo preso un numero intero come nostra variabile. Prenderemo un intero e proveremo a confrontarlo con il puntatore. Per fare ciò, abbiamo inizializzato un array "io" con 1 lunghezza. Abbiamo dichiarato un'altra variabile R che è un numero intero e lo ha superato il valore 4. Vogliamo vedere se i valori corrispondono al sistema dovrebbero restituire 1 e se non sono uguali, il sistema restituirà 0. Quindi, eseguiamo il nostro codice per vedere cosa succede.

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

int i [1];
int r = 4;

se io != R)

restituzione (0);

altro
restituzione (1);


Dopo l'esecuzione del nostro codice, questo è l'output. Il sistema ci ha dato di nuovo l'errore. In questo caso, è sulla linea 10. Se torniamo indietro e guardiamo il nostro codice, lo vedremo sulla riga 10, stiamo confrontando il nostro array con il nostro numero intero. Non abbiamo specificato quale indice stiamo confrontando. Quindi, il sistema confronterà l'intera memoria con il nostro numero intero. Nel nostro codice, la memoria sarà un puntatore. Il sistema ci darà l'errore a causa di questo tipo di dati incoerente.

Ora risolveremo l'errore. Per fare ciò, diremo semplicemente la lunghezza del nostro array al sistema. Per questo, sostituiremo "I" con "I [1]" in modo che il sistema prenda l'intero dall'indice del nostro array e confronterà quell'intero con il nostro numero intero dichiarato personalizzato che è "R".

Ora nell'immagine sopra, possiamo vedere che il nostro codice viene eseguito correttamente e restituito a noi 0. Ciò significa che io [1] non è uguale a r. Ma la cosa principale è che l'errore viene risolto e il codice viene compilato ed eseguito correttamente. Se i valori fossero gli stessi, il sistema avrebbe restituito 1.

Conclusione

In questa guida, abbiamo discusso di un errore che si verifica durante la scrittura di codice. Abbiamo spiegato perché si verifica questo errore, quali errori commette un programmatore che ha portato a questo errore e come evitare e risolvere l'errore. Abbiamo anche eseguito esempi diversi e abbiamo cercato di ottenere questo errore in diverse condizioni. Dopodiché, abbiamo risolto gli errori e abbiamo sottolineato gli errori nel nostro codice per aiutarti a capire meglio.