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

Błąd ISO C ++ zabrania porównania wskaźnika i liczby całkowitej
W C ++ pojedyncze apostrofy są używane do reprezentowania znaków, a nie strun. Używamy symboli podwójnych cytatów, aby uosabiać wskaźnik. Po opracowaniu programów w C ++ otrzymujemy różne błędy. Błąd porównania jest jednym z nich. Czasami po uruchomieniu programu uzyskujemy „ISO C ++ zabrania porównania wskaźnika i liczby całkowitej” lub od czasu do czasu, otrzymujemy „ISO C ++ zabrania porównania wskaźnika i liczby całkowitej [-fpermisive]”. Kiedy otrzymamy tego rodzaju błędy, musimy sprawdzić warunek porównania zastosowany do programu. Musimy pamiętać o tym, że warunek porównania jest niezgodny z odrębnym typem danych. Aby rozwiązać C ++ zabrania błędu porównania, musimy po prostu ocenić porównywalną formę zdefiniowanych zmiennych w warunkach.

W tym artefakcie pracujemy nad tymi błędami i widzimy, jak je rozwiązać w C++.

Posiadanie różnych typów danych zmiennych podczas porównania:

Po użyciu standardu przestrzeni nazw, deklarujemy funkcję w tym przypadku. Następnie zainicjujemy zmienną „V” dla wartości i przypisujemy wartość 1. Stosujemy warunek IF, aby porównać wartość z funkcją. Jeśli wartość jest większa niż funkcja, nastąpi przyrost o 1 w wartości. Funkcja musi zwrócić wartość. Teraz zaczynamy główny organ kodu. Ogłaszamy zmienną „V”.

#włączać
za pomocą przestrzeni nazw Std;
int f (int j, int k)
int v = 1;
if (v> f)
return (v+1);

powrót v;

int main ()
int v = f (4,7);
powrót 0;

Po skompilowaniu otrzymujemy błąd „ISO C ++ zabrania porównania wskaźnika i liczby całkowitych [-fpermissive]”, więc program nie jest wykonywany.

Kiedy zastosujemy warunek, jeśli (v> f) popełniamy błąd tutaj. Porównujemy funkcję z liczbą całkowitą, więc tutaj to porównanie jest błędne. Zawsze porównaj te zmienne, które zawierają podobny typ danych. Gdy ocena jest niedokładna, uzyskamy ten rodzaj błędu. Stąd tutaj musimy ocenić za pomocą kilku wartości integralnych. Tutaj wyeliminowaliśmy wywołanie funkcji i oceniliśmy je za pomocą wartości całkowitej. W ten sposób błąd może zostać rozwiązany.

Nieprawidłowy typ „Double (int)”:

Na początku programu obejmujemy bibliotekę . Następnie definiujemy rozmiar listy. W głównym ciele definiujemy zmienne. Typ danych listy jest „podwójny”. Deklarujemy funkcję „get_avg”, mając podwójny typ danych. Podajemy dwa parametry dla funkcji. Następnie deklarujemy zmienną „sumę” z podwójnym typem danych. Ubiegamy się o pętlę, a wartość jest zwiększana, aby uzyskać sumę.

#włączać
#określić rozmiar 15
int main (void)
Podwójna lista;
podwójne get_avg (const podwójna lista [], int r);
int J;
podwójna suma = 0;
int n [rozmiar];
dla (j = 0; jsum += lista [j];

zwrot (suma);

Tutaj otrzymujemy również ten sam błąd. Ponieważ funkcja zawsze zawiera argumenty z tym samym typem danych. W tym kodzie przekazujemy parametr funkcji o różnych typach danych.

Użyj instrukcji IF-ELSE:

Ten program najpierw zawiera plik nagłówka do celów wejściowych i wyjściowych. Następnie używamy standardu przestrzeni nazw. W głównym organu kodu deklarujemy ciąg „s”. Typ danych ciągu to „char”. Przekazujemy wartość 5 jako argument do łańcucha. Ponadto stosujemy warunek IF-ELSE; Jeśli użytkownik wprowadza „XYZ”, funkcja „Cout” wyświetla „poprawną” na ekranie; W przeciwnym razie wyświetla komunikat „we właściwej”.

#włączać
za pomocą przestrzeni nazw Std;
int main ()
Char S [5];
Cout << "Enter string";
cin >> s;
if (s == 'xyz')

Cout << "correct";
w przeciwnym razie
Cout << "In correct";

powrót 0;

Podczas realizacji programu nabywamy błąd: „ISO C ++ zabrania porównania wskaźnika i liczby całkowitych [-fpermissive]. If (s == 'xyz'), tutaj „s” to stały typ char*. I to jest szereg postaci. Ale tutaj „XYZ” jest celowy jako wartość liczb całkowita. Musi to być natarczywa wartość ciągu ze względu na fakt, że pojedynczy znak cytatu jest rozważany jako wartość integralna.

Po uruchomieniu programów otrzymujemy różne rodzaje błędów. Błędy są błędem w czasie wykonywania dwóch rodzajów i błąd czasu kompilatora. Ten błąd jest błędem czasu wykonywania.

Jak rozwiązać błąd?

Dalej integracja pliku nagłówka i użycie standardu przestrzeni nazw. Dalej kodujemy w głównym ciele. String jest zadeklarowany. Używamy „cout” do wydrukowania wiadomości „Wprowadź ciąg” na ekranie, więc użytkownik wchodzi do ciągu. Aby sprawdzić warunek, używamy instrukcji IF-ELSE.

#włączać
za pomocą przestrzeni nazw Std;
int main ()
String s;
Cout << "Enter the string: ";
cin >> s;
if (s == "xyz")

Cout << "correct";
w przeciwnym razie
Cout << "In correct";

powrót 0;

Dlatego do porównania musimy użyć podwójnych znaków cytatowych „XYZ”. I podaj go jako zmienną ciągu. Teraz możemy się odnosić za pomocą s == „xyz”.

Gdy użytkownik wprowadza ciąg „XYZ”, program drukuje poprawnie, ponieważ zdefiniowaliśmy ten sam ciąg w powyższym kodzie. Użytkownik wprowadził ciąg, a zdefiniowany ciąg jest taki sam, więc otrzymujemy to wyjście.

Wniosek:

W tym artykule najpierw określa błąd ISO C ++ zabrania porównania wskaźnika i liczby całkowitej. Wyjaśniliśmy również przyczynę tego błędu. Oraz metoda rozwiązania tego problemu. Kiedy porównujemy zmienne, w przeciwieństwie do typów danych, nabywamy ten rodzaj błędu. Aby wyeliminować ten rodzaj błędu, musimy wykorzystać zmienne z identycznymi typami danych podczas porównywania dwóch zmiennych.