Wpis z mikrobloga

#programowanie #pytaniedoeksperta #csharp

Hej, niedawno zacząłem naukę i robię sobie proste zadania z różnych poradników. I mam pytanie co do jednej konstrukcji, która co prawda daje poprawny rezultat, ale nie jestem jej w 100% pewny (Visual Studio też nie i daje ostrzeżenie xd)

Zadanie : Wylosuj 2 liczby z przedziału 1 do 10. Wypisz “tak”, jeżeli pierwsza z nich jest większa od 5, a ich suma, większa od 10.

mój kod

{
rand1 = (Random.Range(1, 10));
rand2 = (Random.Range(1, 10));
if (rand1 < 5) ;
else if (rand1 + rand2 > 10) { Debug.Log("tak"); }
}

A pytanie konkretnie o trzecią linijkę kodu, bo Visual Studio pisze że wystąpiła pusta instrukcja, ale z tego co rozumiem to definiuje ona przejście do else if. Czy to na pewno dobrze wszystko, czy przez przypadek kod działa?

Kod sugerowany z zadania wygląda tak

{
int rndA = Random.Range (0, 10);
int rndB = Random.Range (0, 10);

if (rndA > 5 && (rndA + rndB) > 10) {
Debug.Log ("tak");
}
  • 23
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Karpaj: Fakt, masz racje. Zadanie zostało rozwiązane. Jak na początek drogi jest to okej, aczkolwiek kod jest bardzo nieczytelny i powinno się używać jak najkrótszych konstrukcji - korzystać w takim przypadku z && oraz w innych zadaniach ||.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 2
@Karpaj:

Tak jak piszesz gdybyś użył <= to wszystko byłoby poprawnie tylko nieczytelnie. Puste instrukcje łatwo przegapić dlatego VS ostrzega, dodatkowo lepiej stosować dokładnie takie porównania jakie są wymagane.
Jak jest że większe od 5 to x>5 bo jeśli zaczniesz kombinować i przekształcać narażasz się na błędy co właśnie wystąpiło.

Jeśli już
  • Odpowiedz
Nie powinienem użyć z jakiego powodu?

Konstrukcja działa, choć jest pewnie trochę mniej czytelna - to powód dla którego nie powinienem jej stosować?


@Karpaj: tak. Kod się pisze dla ludzi, nie dla komputerów.
  • Odpowiedz