• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zagnieżdżanie if

Cloud VPS
0 głosów
915 wizyt
pytanie zadane 10 lipca 2020 w C i C++ przez Nikto0 Użytkownik (500 p.)

Witam. Dlaczego w tym pseudokodzie else odnosi się do if warunku pierwszego?

if(warunek pierwszy)
{
       if(warunek drugi)
       {
           //...
        }
}
else //else dla warunku pierwszego
{
   //...
}

 

3 odpowiedzi

+1 głos
odpowiedź 10 lipca 2020 przez Marak123 Stary wyjadacz (11,190 p.)
Ponieważ są napisane w tym samym pionie jak byś przesunął tego elsa pod tego drugiego if-a należał by do tego drugiego if-a tylko oczywiście byś musiał zamkną to w klamrach tego 1 if-a
komentarz 10 lipca 2020 przez Nikto0 Użytkownik (500 p.)
A jak działa zasada która mówi, że jeśli nie decydują o tym nawiasy klamrowe to else odnosi się do poprzedzającego go if?

Czy tutaj ona ma zastosowanie?
1
komentarz 10 lipca 2020 przez KamQiX Dyskutant (9,090 p.)
Nie, ponieważ tutaj decydują o tym nawiasy klamrowe :)
komentarz 10 lipca 2020 przez Nikto0 Użytkownik (500 p.)
A jakby to wyglądało według tej zasady?
1
komentarz 10 lipca 2020 przez Marak123 Stary wyjadacz (11,190 p.)
0 głosów
odpowiedź 10 lipca 2020 przez Amatorcpp Obywatel (1,590 p.)
edycja 10 lipca 2020 przez Amatorcpp
if(warunek pierwszy)
{
       if(warunek drugi)
       {
          
        }
        else //else dla warunku 2
          {
          }
}

 

komentarz 10 lipca 2020 przez KamQiX Dyskutant (9,090 p.)
Nie, to else dla drugiego warunku.
komentarz 10 lipca 2020 przez Amatorcpp Obywatel (1,590 p.)
ja ja tu pokazuje dla drugiego
komentarz 10 lipca 2020 przez KamQiX Dyskutant (9,090 p.)
Nie rozumiem :P
komentarz 10 lipca 2020 przez Amatorcpp Obywatel (1,590 p.)
Ja pokazałem kod w którym else odnosi się do drugiego warunku
0 głosów
odpowiedź 10 lipca 2020 przez amtrax Dyskutant (9,630 p.)

W tym przypadku klamry określają "zasięg" instrukcji warunkowej. 

if (warunek pierwszy)
{
    if (warunek drugi zagniezdzony)
      {
      [....]
    }
   else [....] // else jest zagnieżdzone w warunku pierwszym podobnie jak druga instrukcja //warunkowa dlatego odnosi się właśnie do niej. 
    

} 
else //odnosi się do warunku pierwszego, jest umiejscowione za ostatnią klamrą 1 instrukcji
[....]

M.in w wyrażeniach warunkowych  nie trzeba używać nawiasów klamrowych, jeżeli blok zawiera jedną instrukcję

Jednak w takim przypadku jak poniżej, najlepiej zastosować klamry ze względu na czytelność kodu. 

if (i > 2 || j < 5) // 1 warunek 
    if (j > 3) // 2 warunek if, zagnieżdzony 
       j++;
    else   //else odnosi się do 2 warunku
       j--;  
else   // odnosi się do 1 warunku 
[....] 

 

Podobne pytania

0 głosów
1 odpowiedź 302 wizyt
pytanie zadane 25 grudnia 2019 w C i C++ przez kondron Nowicjusz (120 p.)
0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 10 czerwca 2019 w C i C++ przez RSG00 Nowicjusz (170 p.)
0 głosów
2 odpowiedzi 792 wizyt
pytanie zadane 24 lipca 2020 w C i C++ przez Nikto0 Użytkownik (500 p.)

93,487 zapytań

142,420 odpowiedzi

322,772 komentarzy

62,903 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...