M1 L10 Zmienne logiczne – przypisanie a porównanie

W przypadku zmiennych logicznych należy zwrócić uwagę na operator równości. Pojedynczy znak = oznacza przypisanie wartości, a dopiero podwójny jest porównaniem logicznym. Jest to jeden z typowych błędów początkujących programistów – w dodatku taki, który niekoniecznie musi spowodować zatrzymanie programu, a nawet dawać pozornie poprawne wyniki.

Załóżmy, że w 3 linijce poniższego programu chcieliśmy porównać zmienne i stwierdzić, czy są identyczne – jednak omyłkowo użyliśmy jednego znaku =.

Wykonanie takiego kodu da nam poprawny wynik (True – 10 jest liczbą parzystą), mimo iż końcowe porównanie zostało wykonane na wartości 20 zamiast 10. Może to prowadzić do błędnego wniosku, iż program robi dokładnie to co od niego oczekujemy – wystarczy jednak zmienić X na 11 i wynik będzie niepoprawny.

W przypadku prostych programów dość łatwo wykryć i poprawić taki błąd. W powyższym kodzie jest on widoczny praktycznie od razu. Jeśli jednak mamy bardziej złożony program, z setkami linii kodu i wartość X jest np. wczytywana z pliku, takie pomyłki mogą pozostać niezauważone i dawać błędne wyniki.