Fehler ISO verbietet den Vergleich zwischen Zeiger und Ganzzahl

Fehler ISO verbietet den Vergleich zwischen Zeiger und Ganzzahl
In diesem Artikel geht es um einen Fehler, der häufig beim Vergleich von Zeigern und Ganzzahlen auftritt. Bevor wir zu unserem Thema übergehen, sollten wir wissen, was ISO ist. ISO steht für die International Standards Organization. Dieses Unternehmen entwickelt und veröffentlicht internationale Standards. Während der Programmierung in C ++ - Sprache erhalten wir häufig diesen Fehler, dass ISO den Vergleich zwischen Zeiger und Ganzzahl verbietet. Dieser Fehler tritt auch in anderen Sprachen wie C -Sprache auf. Die Hauptfrage stellt sich, warum ISO keine Vergleiche zwischen Zeigern und Ganzzahlen erlaubt.

Die Antwort ist, dass in C ++ - Sprache, wenn ein Programmierer versucht, zwei verschiedene Datentypen zu vergleichen, den Vergleichsfehler wirft. Eine Ganzzahl ist also ein anderer Datentyp und ein Zeiger ist eine Adresse des Speichers. Daher gibt der Compiler einen Fehler an, da beide unterschiedliche Datenatypen sind. Dieser Fehler tritt nicht nur beim Vergleich von Zeigern und Ganzzahlen auf, sondern tritt auch dann auf, wenn wir versuchen, zwei Variablen verschiedener Datenatypen zu vergleichen.

Syntax

Es handelt sich um eine Fehlermeldung, sodass sie keine Syntax enthält, aber wir können Ihnen zeigen, wie dieser Fehler aussieht:

Fehler: ISO C ++ verbietet den Vergleich zwischen Zeiger und Ganzzahl [-Fermisssiv]

Beispiel # 01:

Um den Fehler ausführlich zu verstehen, werden wir ein Beispiel ausführen, in dem wir unsere Variable mit einem anderen Datentyp vergleichen, und wir werden feststellen, ob das System einen Fehler auslöst oder nicht. Zu diesem Zweck haben wir ein Charakter -Array mit dem Namen „X“ mit einer Länge von 5 deklariert. Wir haben unsere Nachrichten für die Lesbarkeit der Benutzer gedruckt. Wenn wir nun einen Blick auf die Zeile Nummer 4 werfen, werden wir sehen, dass wir unsere Variable mit dem Wort "Hallo" vergleichen, vergleichen wir unsere Variable. Der Zweck unseres Codes ist, wenn die Werte unserer Variablen und der Übergabe der Wertübereinstimmung. Der Compiler sollte in den If -Zustand gehen. Danach kehrt der Compiler zurück (0) und beendet erfolgreich aus unserem Code. Lassen Sie uns nun unseren Code ausführen.

#enthalten
Verwenden von Namespace STD;
Char X [5];
Cout x;
if (x == 'Hallo')

Cout<<"Hi How are You";

return (0);

Nachdem wir unseren Code ausgeführt haben, erhalten wir infolgedessen den folgenden Fehler von unserem Compiler. Wenn wir die Fehlermeldung genau untersuchen, können wir sehen, dass der Compiler auf einen Fehler in Zeile 7 hingewiesen hat. Dies ist die Zeile, in der wir versucht haben, unsere Variable mit einem Wert „Hallo“ zu vergleichen. Der Compiler nimmt Strings oder Charaktere in doppelten Zitaten wie („Hallo“) auf. Aber hier haben wir den Wert in einzelnen Zitaten wie ('Hallo') übergeben. Die Datentypen stimmen also nicht überein und der Compiler erkennt unseren bestandenen Wert als Zeiger. Aus diesem Grund kann der Compiler keinen Vergleich zwischen ihnen durchführen und einen Fehler werfen, den wir in der folgenden Abbildung in roter Farbe sehen können.

Lassen Sie uns nun versuchen, den Fehler zu beheben und unseren Code erfolgreich auszuführen. Zu diesem Zweck müssen wir in unserem Fall nur den bestandenen Wert von 'Hallo' zu „Hallo“ ändern, damit das System ihn als Charakter erkennt. Wir werden einfach einzelne Zitate mit doppelten Zitaten ändern. Danach werden wir unseren Code ausführen.

Nach dem Ausführen unseres Code. Der Compiler hat unseren Code erfolgreich ausgeführt und das gedruckt, was wir ihn zum Drucken gebeten haben. Danach werden uns die Nachricht angezeigt, dass das Programm mit dem Exit -Code 0 endete, da wir endlich 0 aus unserer Hauptfunktion zurückgegeben haben. Wir können also sehen, dass wir unser Problem gelöst haben, indem wir nur den richtigen Datentyp übergeben haben.

Beispiel # 02:

Im vorherigen Beispiel haben wir erklärt, wie der Compiler einen Fehler auslöst. Aber wir haben eine Ganzzahl als unsere Variable nicht genommen. Wir werden eine Ganzzahl nehmen und versuchen, ihn mit dem Zeiger zu vergleichen. Dazu haben wir ein Array "I" mit 1 Länge initialisiert. Wir haben eine andere Variable R deklariert, die eine Ganzzahl ist und ihm den Wert 4 übergeben hat. Wir möchten sehen, ob die Werte mit dem System übereinstimmen, sollte 1 zurückgeben und ob sie nicht gleich sind, das System gibt 0 zurück. Lassen Sie uns unseren Code ausführen, um zu sehen, was passiert.

#enthalten
#enthalten
Verwenden von Namespace STD;
int main ()

int i [1];
int r = 4;

wenn ich != r)

return (0);

anders
Rückgabe (1);


Nach der Ausführung unseres Codes ist dies die Ausgabe. Das System hat uns wieder den Fehler gegeben. In diesem Fall ist es in Zeile 10. Wenn wir zurückgehen und uns unseren Code ansehen, werden wir sehen, dass wir in Zeile 10 unser Array mit unserer Ganzzahl vergleichen können. Wir haben nicht angegeben, welchen Index wir vergleiche. Das System verglichen also den gesamten Speicher mit unserer Ganzzahl. In unserem Code wird der Speicher ein Zeiger sein. Das System gibt uns den Fehler aufgrund dieses inkonsistenten Datentyps.

Jetzt werden wir den Fehler beheben. Dazu werden wir einfach die Länge unseres Arrays dem System erkennen. Dafür werden wir das „I“ durch „I [1]“ ersetzen, damit das System die Ganzzahl aus dem Index unseres Arrays nimmt und diese Ganzzahl mit unserer benutzerdefinierten, deklarierten Ganzzahl, die „R“ ist, vergleichen wird.

Jetzt im obigen Bild können wir sehen, dass unser Code erfolgreich ausgeführt und an uns zurückgegeben wird 0. Dies bedeutet, dass ich [1] nicht gleich R ist. Die Hauptsache ist jedoch, dass der Fehler behoben und der Code erfolgreich zusammengestellt und ausgeführt wird. Wenn die Werte gleich wären, hätte das System 1 zurückgegeben.

Abschluss

In diesem Leitfaden haben wir einen Fehler besprochen, der beim Schreiben von Code auftritt. Wir haben erklärt, warum dieser Fehler auftritt, welche Fehler ein Programmierer macht, der zu diesem Fehler geführt hat und wie man den Fehler vermeidet und beheben kann. Wir haben auch verschiedene Beispiele durchgeführt und versucht, diesen Fehler unter verschiedenen Bedingungen zu erhalten. Danach haben wir die Fehler gelöst und auf die Fehler in unserem Code hingewiesen, um Ihnen zu helfen, besser zu verstehen.