2015-02-24 14 views
5

Ile warunków może spełnić, jeśli zaznaczono? EG,Ile warunków może spełnić, jeśli sprawdzenie dla

if(a==1 && b==1 && c==1 && ... && n==1) 

wiem, że to prawdopodobnie mógłby być rozwiązany jedynie poprzez zagnieżdżanie ifs i to nie byłby problem, ile. Szczerze mówiąc, jestem ciekawy i nie mogę się zorientować, ile to zajmie.

Ponadto, ponieważ mam swoją uwagę w każdym razie, jest jakaś różnica w wydajności pomiędzy

if(a==1 && b ==1) 

I

if(a==1) 
    if(b==1) 
+5

Proszę zadać jedno pytanie na pytanie. –

+0

Technicznie tylko 1 warunek jest oceniany wewnątrz 'if', co jest raptem się dzieje, gdy jeden warunek jest oceniany, a jego wynik oceniany jest następująco itd. –

+0

1) nie ma limitu. 2) oba są takie same –

Odpowiedz

7

Nie ma ograniczeń co do kwoty instrukcji warunkowych w if. Ponadto nie ma żadnych ulepszeń wydajności w żadnym z dwóch bloków.

Największa różnica między nimi polega na tym, że nie masz kontroli nad tym, który z nich zakończył się niepowodzeniem.

przykład:

if(a==1 && b==1) { 
    //do something 
} else { 
    //no way to tell which one failed without checking again! 
} 

drugi:

if(a==1) { 
    if(b==1) { 
     //do something 
    } else { 
     // 'b' failed (meaning: b is not equal to 1) 
    } 
} else { 
    // 'a' failed 
} 
8

Nie ma wyraźnej granicy, o ile wiem. Praktyczny limit dotyczy sytuacji, w których czytelność staje się problemem.

Rzeczywisty limit kodu jest prawdopodobnie spowodowany faktem, że metoda Java może zawierać tylko około 64 KiB kodu bajtowego.

Twoje ostatnie dwa bloki kodu robią to samo (zakładając, że za nimi jest tylko jeden blok kodu lub instrukcja). Różnią się one tylko wtedy, gdy w grę wchodzi else.

2

Nie jestem pewien co do ilości instrukcji w klauzuli if, ale wydajność między tymi dwiema składniami jest taka sama. Kompilator generuje ten sam kod bajtowy, niezależnie od używanej składni.

+0

Będzie lepiej, jeśli udowodnią, że wygenerowany kod bajtowy dla obu kawałków kodu jest taki sam tutaj w twoim wpisie, jak również. –

2

język Java if instrukcja może sprawdzić dokładnie jeden warunek:

IF ( logiczna ekspresja) oświadczenie [inny oświadczenie]

a==1 && b==1 && c==1 && ... && n==1 w przykładzie jest jeden wyrażenie logiczne i, jak inni już mówiłem, nie ma limitu na jak ciężko kompleks logiczną wyrażenie może być.

Powiązane problemy