Wyrażenie błędu C ++ musi być modyfikowalną lValue

Wyrażenie błędu C ++ musi być modyfikowalną lValue

Podczas pisania kodu w momencie wykonania mogą wystąpić różne błędy. Istnieją różne rodzaje błędów, takie jak błędy logiczne, błędy składniowe i błędy czasu kompilacji. Błędy logiczne są trudne do sprawdzenia, ponieważ w tego typu błędach nie wyświetla się błędów, podczas gdy w momencie wykonywania można wykryć błędy składni i kompilacji. W tym przewodniku omówimy również rodzaj błędu „Błąd: LVAlue Wymagany jako operand z przypisaniem”. Ten błąd występuje głównie podczas porównywania dwóch zmiennych lub liczb całkowitych. Ten rodzaj błędu występuje z powodu błędnego przekonania lub błędu podczas pisania kodu. Czasami nowicjusze mają nieporozumienia na temat zadań i operatorów porównawczych, z czego napotykają ten rodzaj błędu. Czasami, podczas kodowania, programista popełnia mylakea i używa operatora przypisania zamiast operatora porównawczego. Jest to łatwe do rozwiązania, ponieważ w części wyjściowej wymagany jest opis błędu, który jest.

Składnia:

Nie ma do tego takiej konkretnej składni, ponieważ nie jest częścią kodu. Jest to błąd wyświetlany w obszarze wyjściowym podczas wykonywania kodu. Poniżej znajduje się przykład tego, jak wygląda ten błąd:

Błąd: LVELUE Wymagane jako lewe operand przydzielenia

W wcześniej wspomnianym błędzie LValue oznacza, że ​​obiekt, który może mieć zidentyfikowaną lokalizację pamięci. Możemy również powiedzieć, że ma on określony adres w pamięci, w której jest przechowywany. Kiedy mówimy o zadaniu, może on przechowywać dane.

Przykład 1:

Teraz zaimplementujemy przykład, w którym generujemy ten typ błędów i rozwiązywamy go. Najpierw dołączymy plik nagłówka iostream, który umożliwia kompilatorowi wykonywanie operacji we/wy. Następnie tworzymy trzy zmienne typu liczb całkowitych w głównej metodzie. Pierwszym typem liczb całkowitych to „A”, do której przypisujemy wartość „2”. Przypisujemy wartość „3” do drugiej zmiennej „B” samej jak trzecia zmienna, która jest „C”, gdzie utrzymuje wartość „3”. Następnie używamy instrukcji if () do porównania zmiennych. Mamy dwa warunki: Pierwszym warunkiem jest to, że zmienna „a” nie jest równa zmiennej „B”. Drugim warunkiem jest to, że zmienna „B” jest równa zmiennej „C”. Jeśli oba stwierdzenia są prawdziwe, wyświetla komunikat „Porównanie dopasowy”. Na koniec zwracamy wartość zerową.

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

int a = 2;
int b = 3;
int c = 3;
Jeśli != B && B = C)

STD :: Cout << "Comparison match" << std::endl;

powrót 0;

Po wykonaniu kodu otrzymujemy błąd, który wyświetla, że ​​istnieje błąd, który pokazuje „LVAlue wymaganą jako operand z przypisania”. Jak wiemy, błąd występuje w linii, a rodzaj błędu wskazuje również, że po lewej stronie operandu jest lewa wartość (lValue). Teraz rozwiązujemy ten błąd, zastępując operatora przypisania „=” operatorem porównawczym „= =”. Następnie ponownie wykonujemy kod.

Po ponownym wykonaniu kodu otrzymujemy to wyjście, które pokazuje, że wykonaliśmy kod bez żadnego błędu. Pokazuje, że nasze warunki są prawdziwe.

Przykład 2:

Wykonajmy kolejny przykład, aby uzyskać lepszy pomysł na rozwiązanie tych błędów. W tym przykładzie utworzymy trzy zmienne i mając tryb dwóch zmiennych, porównujemy go z trzecim za pomocą instrukcji IF-ELSE. Jeśli porównanie pasuje, porusza się w instrukcji IF. Jeśli nie pasuje, wykonuje instrukcję else. Rzućmy okiem na nasz kod, w którym najpierw dołączamy nasze pliki nagłówka, a następnie przejdźmy do naszej głównej funkcji, w której deklarujemy trzy zmienne o nazwie „Val1”, „Val2” i „Val3”, do których przypisujemy wartości „2” , „3” i „5”. Następnie, używając instrukcji IF, porównujemy tryb zmiennych „Val1” i „Val2” z trzecią zmienną „VAL3”. Jeśli to pasuje, nasz kod wewnętrzny instrukcji IF jest wykonywany. Jeśli to nieprawda, instrukcja else jest wykonywana. Na koniec wykonujemy nasz kod, zwracając wartość zerową.

#włączać
za pomocą przestrzeni nazw Std;
int main ()
int val1 = 2;
int val2 = 3;
int val3 = 5;
if ((val1%val2) = val3)

STD :: Cout << "Comparison is a match" << std::endl;

w przeciwnym razie

STD :: Cout << "Comparison doesn't match" << std::endl;

powrót 0;

Po wykonaniu naszego kodu odkrywamy ten rodzaj błędu, który wskazuje, że przegapiliśmy LValue jako lewą operand przypisania, wskazuje zmienną „Val3”. Oznacza to, że brakujący LValue znajduje się po lewej stronie zmiennej „Val3”. Ponieważ operator porównawczy nie jest wykorzystywany w tym przypadku i zamiast tego używany jest operator przypisania, występuje błąd. Jeszcze jedną rzeczą, o której należy pamiętać, jest to, że nie możemy przypisać wartości do dowolnej zmiennej w instrukcji if (). Instrukcja if () jest używana do porównania zmiennych, a nie do przypisywania wartości do zmiennej. Dlatego wyświetla ten błąd. Teraz rozwiązujemy ten problem, zastępując operatora przypisania operatorem porównawczym. Następnie ponownie wykorzystujemy kod.

Po ponownej ekspetacji naszego kodu wyświetlamy wiadomość - „Porównanie nie pasuje”. Powodem otrzymania tego przesłania jest to, że instrukcje else są wykonywane jak widać w poprzednim kodzie. Tworzymy trzy zmienne, do których przypisujemy wartości, a tryb dwóch wartości jest porównywany z trzecim. Tutaj tryb „Val1” i „Val2” to „0.6 ”, porównując go z VAL3, który zawiera liczbę„ 5 ”. Nie jest prawdą, że wartość „Val3” jest równa „0.6 ”. Kompilator ignoruje wewnętrzny kod instrukcji IF i wykonuje instrukcję else.

Wniosek

W tym samouczku omówiliśmy błąd czasu kompilacji, który najprawdopodobniej występuje z powodu błędnego przekonania lub błędu, który jest dokonywany przez programistę. Wyjaśniliśmy błąd z krótkim opisem i wieloma przykładami, aby ułatwić ci pomysł na to i metodę rozwiązania i zrozumienia typu błędu. Dołożyliśmy wszelkich starań, aby było to tak proste, jak to możliwe, aby naprawić ten błąd, gdy pojawia się on w kodzie, pisząc program.