Intrukcja warunkowa if

0

Witam mam dylemat korzystając z instrukcji warunkowej który z zapisów jest lepszy:

if(jakas_funkcja()==1) cout <<1;
if(jakas_funkcja()==2) inna_funkcja();
if(jakas_funkcja()==3) return 0;
 
short wybor;
wybor=jakas_funkcja();
if(wybor==1) cout <<1;
if(wybor==2) inna_funkcja();
if(wybor==3) return0;

Być może dla Was oba mogą być błędne, jeżeli tak to prosiłbym o nakierowanie na dobrą drogę ;p

0

A wiesz co to robi?
jakasfunkcja() zwraca (dziwne?) jakaś wartosc. Pierwsza opcja jest lepsza bo ładniejsza :D

0

jeśli twoja funkcja wygląda tak: short jakas_funkcja() { return STALA; } to kompilator i tak to zoptymalizuje i na jedno wyjdzie. w większości przypadków lepiej użyć opcję numer 2 ze względu na to, że funkcja będzie wywołana tylko 1 raz, a nie 3. najlepsza by była opcja mniej więcej taka:

switch(jakas_funkcja())
  {
    case 1: cout <<1; break;
    case 2: inna_funkcja(); break;
    case 3: return 0;
  }
0

Druga jest lepsza bo wywołujesz funkcję tylko raz! Poza tym pewnie moze tam być else if

0

Zasadniczo druga jest lepsza, bo wywołujesz funkcję tylko raz, ale należy pamiętać, że nie zawsze będzie oznaczała to samo co pierwsza. Np. w tym przypadku Twoje dwa zapisy dadzą inny efekt:

short jakas_funkcja()
{
  cout<<"Wypisz cos";
  return 1;
}
0

Ok, dziękuje za odpowiedź.

1 użytkowników online, w tym zalogowanych: 0, gości: 1