Błąd ISO zabrania porównania wskaźnika i liczby całkowitej

Błąd ISO zabrania porównania wskaźnika i liczby całkowitej
Ten artykuł dotyczy błędu, który często występuje podczas porównywania wskaźników i liczb całkowitych. Przed przejściem do naszego tematu powinniśmy wiedzieć, czym jest ISO. ISO oznacza międzynarodową organizację standardów. Ta firma rozwija i publikuje standardy międzynarodowe. Podczas programowania w języku C ++ często otrzymujemy ten błąd, który ISO zabrania porównania wskaźnika i liczby całkowitej. Ten błąd występuje również w innych językach, takich jak język c. Główne pytanie pojawia się, dlaczego ISO nie zezwala na porównania wskaźników i liczb całkowitych.

Odpowiedź jest taka, że ​​w języku C ++, gdy programista próbuje porównać dwa różne danych, system rzuci błąd porównywania. Tak więc liczba całkowita to inny danych, a wskaźnik to adres pamięci. Dlatego kompilator poda błąd, ponieważ oba są różnymi danych. Ten błąd występuje nie tylko podczas porównywania wskaźników i liczb całkowitych, ale występuje, gdy próbujemy porównać dwie zmienne różnych danych.

Składnia

Jest to komunikat o błędzie, więc nie ma żadnej składni, ale możemy pokazać, jak wygląda ten błąd:

Błąd: ISO C ++ zabrania porównania wskaźnika i liczby całkowitej [-fpermisive]

Przykład nr 01:

Teraz, aby szczegółowo zrozumieć błąd. W tym celu ogłosiliśmy tablicę postaci o nazwie „x” o długości 5. Wydrukowaliśmy nasze wiadomości pod kątem czytelności użytkownika. Teraz, jeśli przyjrzymy się wierszowi nr 4, zobaczymy, że porównujemy naszą zmienną ze słowem „cześć”. Celem naszego kodu jest to, czy wartości naszej zmiennej i przekazanej wartości pasują. Kompilator powinien wejść do stanu IF. Następnie kompilator zwróci (0) i z powodzeniem wyjdzie z naszego kodu. Teraz wykonajmy nasz kod.

#włączać
za pomocą przestrzeni nazw Std;
char x [5];
cout x;
if (x == „hello”)

Cout<<"Hi How are You";

zwrot (0);

Po wykonaniu naszego kodu otrzymamy następujący błąd od naszego kompilatora. Jeśli przyjrzymy się uważnie komunikatowi o błędzie, zobaczymy, że kompilator wskazał błąd w wierszu 7. To jest linia, w której próbowaliśmy porównać naszą zmienną z wartością „Hello”. Kompilator bierze sznurki lub znaki w podwójnych cytatach, takich jak („Hello”). Ale tutaj przekazaliśmy wartość w pojedynczych cytatach takich jak („Hello”). Tak więc danych nie pasują, a kompilator rozpoznaje naszą wartość przekazaną jako wskaźnik. Z tego powodu kompilator nie będzie w stanie dokonać porównania między nimi i rzuci błąd, który możemy zobaczyć na poniższym rysunku w kolorze czerwonym.

Teraz spróbujmy rozwiązać błąd i pomyślnie wykonać nasz kod. W tym celu w naszym przypadku będziemy musieli jedynie zmienić przekazaną wartość z „Hello” na „Hello”, aby system rozpoznał ją jako postać. Po prostu zmienimy pojedyncze cytaty z podwójnymi cytatami. Następnie wykonamy nasz kod.

Po wykonaniu naszego kodu powyższa liczba jest taka, jak będzie wyglądać nasze wyjście. Kompilator z powodzeniem wykonał nasz kod i wydrukował to, co poprosiliśmy o wydrukowanie. Następnie pokazuje nam wiadomość, że program zakończył się kodem wyjścia 0, ponieważ w końcu zwróciliśmy 0 z naszej głównej funkcji. Widzimy więc, że przekazując tylko właściwy typ danych, rozwiązaliśmy nasz problem.

Przykład nr 02:

W poprzednim przykładzie wyjaśniliśmy, w jaki sposób kompilator rzuca błąd. Ale nie wzięliśmy liczby całkowitej jako naszej zmiennej. Weźmiemy liczbę całkowitą i spróbujemy porównać ją z wskaźnikiem. Aby to zrobić, zainicjowaliśmy tablicę „I” z 1 długością. Zadeklarowaliśmy inną zmienną r, która jest liczbą całkowitą i przekazaliśmy jej wartość 4. Chcemy sprawdzić, czy wartości pasują do systemu powinny zwrócić 1, a jeśli nie są równe, system zwróci 0. Wykonajmy więc nasz kod, aby zobaczyć, co się stanie.

#włączać
#włączać
za pomocą przestrzeni nazw Std;
int main ()

int i [1];
int r = 4;

Jeśli ja != r)

zwrot (0);

w przeciwnym razie
zwrot (1);


Po wykonaniu naszego kodu jest to wyjście. System ponownie dał nam błąd. W takim przypadku jest on on online 10. Jeśli wrócimy i spojrzymy na nasz kod, zobaczymy, że w linii 10 porównujemy naszą tablicę z naszą liczbą całkowitą. Nie określiliśmy, jaki indeks porównujemy. Tak więc system porówna całą pamięć z naszą liczbą całkowitą. W naszym kodzie pamięć będzie wskaźnikiem. System da nam błąd z powodu tego niespójnego danych.

Teraz rozwiązamy błąd. Aby to zrobić, po prostu powiemy długość naszej tablicy do systemu. W tym celu zastąpimy „I” na „I [1]”, aby system przejęła liczbę całkowitą z indeksu naszej tablicy i porównać tę liczbę całkowitą z naszą niestandardową liczbą całkowitą, która jest „R”.

Teraz na powyższym obrazie widzimy, że nasz kod jest pomyślnie wykonywany i zwrócony do nas 0. Oznacza to, że ja [1] nie jest równe R. Ale najważniejsze jest to, że błąd został rozwiązany, a kod z powodzeniem kompilowany i wykonany. Gdyby wartości były takie same, system zwróciłby 1.

Wniosek

W tym przewodniku omówiliśmy błąd, który pojawia się podczas pisania kodu. Wyjaśniliśmy, dlaczego występuje ten błąd, co popełnia programista, co doprowadziło do tego błędu, i jak uniknąć i rozwiązać błąd. Przeprowadziliśmy również różne przykłady i próbowaliśmy uzyskać ten błąd w różnych warunkach. Następnie rozwiązaliśmy błędy i wskazaliśmy błędy w naszym kodzie, aby pomóc ci lepiej zrozumieć.