Operatory logiczne — część 3
Część sekcji Podstawy ścieżki C w Coddy. Lekcja 23 z 63.
Podczas sprawdzania wielu warunków program przestaje je sprawdzać, gdy tylko zna ostateczną odpowiedź. Nazywa się to ewaluacją zwarciową.
Na przykład:
int x = 0;
int y = 5;
int result = (x != 0) && (y / x > 2);Tutaj x jest równe 0, dlatego warunek y / x > 2 nie zostanie obliczony. Gdybyśmy odwrócili kolejność:
int result = (y / x > 2) && (x != 0);Spowoduje to błąd, ponieważ y zostanie podzielone przez 0, co w języku C jest niezdefiniowane. Dlatego warto dokładnie przemyśleć operacje, aby napisać poprawny i skuteczny kod bez błędów.
Ta technika służy do optymalizacji obliczania wyrażeń logicznych. Na przykład:
int a = 0;
int b = 2;
int c = 3;
int d = 5;
int result = (a > 0 && b < 2) || (c < -5 && d < 10);W tym przykładzie b < 2 i d < 10 nie zostaną obliczone, ponieważ zarówno a > 0, jak i c < -5 są fałszywe.
Wyzwanie
ŁatwyUtwórz program, który zdecyduje, czy to dobry dzień na produkcję energii przez panele słoneczne
Zainicjuj te zmienne:
isSunnywartością 1 (prawda)windSpeedwartością 5.4temperaturewartością 23solarPanelOutputwartością 9isCloudywartością 0 (fałsz)
Utwórz jedno wyrażenie logiczne, które sprawdza WSZYSTKIE te warunki:
- Jest słonecznie
- Prędkość wiatru jest mniejsza niż 10
- Wydajność paneli słonecznych jest mniejsza niż 15
- Temperatura przekracza 20 LUB nie ma chmur
Wypisz "Good day for solar energy", jeśli wszystkie warunki są spełnione, w przeciwnym razie wypisz "Not ideal for solar energy".
Spróbuj swoich sił
#include <stdio.h>
int main() {
// Zainicjalizuj zmienne
int isSunny = 1;
float windSpeed = 5.4;
int temperature = 23;
int solarPanelOutput = 9;
int isCloudy = 0;
// Utwórz wyrażenie logiczne
int isGoodDay =
// Nie zmieniaj kodu poniżej
if (isGoodDay) {
printf("Good day for solar energy\n");
} else {
printf("Not ideal for solar energy\n");
}
return 0;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
2Zmienne
Typy danychLiczby całkowiteLiczby zmiennoprzecinkowe — float i doubleZnakiWartości logiczneStałePodstawy printfZasady nazewnictwa zmiennychKonwersja typów — część 1Konwersja typów — część 2Wyzwanie podsumowujące3Operatory
Operatory arytmetyczneOperator moduloInkrementacja/dekrementacjaOperatory przypisaniaOperatory relacyjneOperatory logiczne — część 1Operatory logiczne — część 2Operatory logiczne — część 3Wyzwanie podsumowującePoćwicz samodzielnie: Kompilator C online