Zastanawiam się i nie wiem, czy:
if( a == 2)
//coś tam 1
else
//coś tam 2
jest równoważne:
if(a == 2)
//cos tam 1
if(a = 3) //na przyklad 3, cokolwiek innego niz 2
//cos tam 2
Zastanawiam się i nie wiem, czy:
if( a == 2)
//coś tam 1
else
//coś tam 2
jest równoważne:
if(a == 2)
//cos tam 1
if(a = 3) //na przyklad 3, cokolwiek innego niz 2
//cos tam 2
Ajj, oczywiście :
if(a == 2)
//cos tam 1
if(a == 3) //na przyklad 3, cokolwiek innego niz 2
//cos tam 2
if( a == 2) // == to jest operator porównania wiec sprawdzasz czy a jest równe 2 jak tak to wykonujesz kod zawarty w if jeżeli nie jest równe wykonujesz else
//coś tam 1
else
//coś tam 2
Czyli wniosek że nie jest to samo co tu napisałeś
if(a == 2)
//cos tam 1
if(a = 3) //na przyklad 3, cokolwiek innego niz 2
//cos tam 2
Jest podobne, ale nierównoważne. Porównaj sobie z tym, a sam się domyślisz w czym rzecz:
int a = 4;
//----------------
if(a < 5)
//coś tam 1
else if(a < 6)
//coś tam 2
//----------------
if(a < 5)
//coś tam 1
if(a < 6)
//coś tam 2
Ogólnie rzecz w tym, że jak mamy same ify to jest sprawdzany każdy warunek po kolei i jest wykonywane tyle warunków ile pasuje. Jak mamy ify wewnątrz elsów to jeżeli pasuje warunek z ifa to te wewnątrz elsów w ogóle nie są sprawdzane.
Ale jest jeszcze inna kwestia...
int a = 10;
//----------------
if(a == 5)
//coś tam 1
else
//coś tam 2
//----------------
if(a == 5)
//coś tam 1
if(a == 6)
//coś tam 2
Czyli, że jak mamy elsa to on pasuje pod wszystko inne. Jak mamy same Ify to jest problem. Oczywiście można też tak...
if(a == 5)
//coś tam 1
if(a != 5)
//coś tam 2
Opolski Portal Programistyczny
http://programowanie.opole.pl
To jest prawdziwe dla True/False, ale po co używać dwóch if'ów skoro można else?
Podobne, ale zdecydowanie nie równoważne:
//1
int a = 5;
if (a == 5) {
a = 6;
cerr << 1;
} else {
cerr << 2;
}
// wyświetli "1"
//2
int a = 5;
if (a == 5) {
a = 6;
cerr << 1;
}
if (a != 5) { // lub np if (a == 6) {
cerr << 2;
}
//wyświetli "12"
if(a == 2)
// cos tam 1
else
// cos tam 2
jest równoważne
if(a == 2)
// cos tam 1
if(!(a == 2))
// cos tam 2
@MJay guzik prawda. W przypadku dwóch ifów masz DWA porównania, w przypadku if..else masz JEDNO porównanie. To jest różnica między:
cmp coś,coś
je prawda
jmp falsz
;a czymś takim
cmp coś,coś
je prawda
cmp coś,coś
jne fałsz
Oczywiście jak to optymalizator potem przerobi to inna bajka, ale po co mu utrudniać życie?
if(a == 2)
//cos tam 1
if(a == 3) //na przyklad 3, cokolwiek innego niz 2
//cos tam 2
w sytuacji, gdy przeciążony jest operator ==
, oba warunki mogą być spełnione. w wariancie z else
– nigdy.