Wpis z mikrobloga

Hej Mirki. Mam pytanie o if .. else if ..else if .. else. Czy po skompilowaniu z -o1 kod wykona się z góry na dół, czy warunki będą sprawdzane "losowo"? Moja zmienna może pasować do kilku warunków, ale chcę żeby priorytet miało zawsze if.
#programowanie #cpp
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@norypS: no właśnie nie jestem pewien, bo w C możesz uzyskać różne efekty przy kompilacji różnymi kompilatorami. Pytam się, czy jest to coś takiego, że każdy kompilator musi to skompilować tak samo.
  • Odpowiedz
@lintfree: No raczej, że to musi się wykonywać w określonej kolejności, wpływa to przecież na cały flow. Nie mówiąc o możliwości pojawienia się rzeczy typu break; continue; .
  • Odpowiedz
@edgar_k: switch case - program może je sprawdzać w innej kolejności. Liczby przyporządkowane zmiennym typu enum mogą się różnić jeśli ich nie zdefiniujesz
  • Odpowiedz
switch case - program może je sprawdzać w innej kolejności. Liczby przyporządkowane zmiennym typu enum mogą się różnić jeśli ich nie zdefiniujesz


@lintfree: i obu tych rzeczy specyfikacja o ile pamietam, nie definiuje - tj. nie definiuje kolejnosci sprawdzania casow ani wartosci enumow. A kolejnosc np. sprawdzania ifow czy obliczania warunkow juz tak
  • Odpowiedz
@edgar_k: Nie mogę już edytować więc wklejam " EDIT: a pytanie wzięło się stąd, że pisząc kiedyś program na atmegę i debugując go, przeskakując po 1 instrukcji, najpierw sprawdziło mi 3. else-if, a potem 1. ". Poza tym nie próbuję tego optymalizować tylko chcę mieć pewność, że kod wykona się w odpowiedniej kolejności
  • Odpowiedz