Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

czeste stosowanie return 0

#1
czeste stosowanie return 0
Witam

Czy częste stosowanie return 0 dla przerwania działania programu jest poprawne?
Np. w tego typu sytuacjach:
Kod:
if(plik.good()==false){
cout<<"\nBRAK PLIKU dane.txt!\n;
system("PAUSE");
return 0;
}
Pytam bo dziś usłyszałem stwierdzenie, że tego typu przerywniki powinno się unikać tak jak kotwic.

Jeśli to prawda to czym zastąpić to return 0?
 System operacyjny: windows_seven Przeglądarka: firefox
#2
RE: czeste stosowanie return 0
Witam, nie widzę żadnych powodów, dla których nie powinno się używać instrukcji return do przerwania programu. Podobne działanie ma funkcja exit wywołana z parametrem 0 (przydatna wtedy, gdy chce się opuścić program, ale nie jest się w funkcji głównej).
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#3
RE: czeste stosowanie return 0
Do wychodzenia z funkcji są dwa podejścia - jedno z nich mówi, że powinien być tylko i wyłącznie jeden punkt wyjścia.
Kod:
enum Errors { OK = 0, E_FILE_OPEN, E_PARSING };
int main() {
  int exit_value = OK;
  if (plik.otwarty) {
    //
    if (parsowanie.pomyslne()) {
      // costam costam
    } else {
      cerr << "Parsowanie szlag trafil\n";
      exit_value = E_FILE_OPEN;
    }
  } else {
    cerr << "Nie otwarto pliku\n";
    exit_value = E_PARSING;
  }

  return exit_value;
}
Przy wielu punktach wyjścia łatwiej bywa o pomyłkę.

Natomiast potrafią one uprościć kod:
Kod:
int main() {
  if (!plik.otwarty) {
    cerr << "Nie otwarto pliku\n";
    return E_FILE_OPEN;
  }
  if (!parsowanie.pomyslne()) {
    cerr << "Parsowanie szlag trafil\n";
   return E_PARSING;
  }
  return 0; // ok
}

Do Ciebie należy wybór.Oczko Ja tam, gdzie zdecydowanie uprości to kod (np kilka skrajnych warunków na samym początku funkcji, które muszą być spełnione) piszę "if (warunek) { return ...; }".
Oczywiście równie dobrze zamiast kodu błędu możemy rzucić wyjątkiem (ale powinna to być rzeczywiście "wyjątkowa" sytuacjaOczko )

Dlaczego nie zwracam 0 w tych przykładach poza ostatnim returnem? Bo 0 sygnalizuje, że wszystko jest ok i program zakończył się sukcesem - inna wartość sygnalizuje, że wystąpił jakiś błąd. Może to mieć znaczenie, jeżeli użyjesz swojego programu w skryptach .bat, .sh itd
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne



Użytkownicy forum szukali:
return 0 c jak zastąpić

Podobne wątki (czeste stosowanie return 0)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  C++ zmiana na plik wykonywalny, oraz problem z funkcja return PATRYK300498 18 5359 05.02.2014, 11:08
Ostatni post: Rincewind
  Słowo kluczowe return wanhelsing 2 2663 15.10.2013, 22:44
Ostatni post: wanhelsing
  Stosowanie gotoxy w Pascal. piotr92 1 3577 13.12.2012, 12:33
Ostatni post: marek1984

Skocz do:


Wybrane wątki (czeste stosowanie return 0)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Programy w C ~Anonim 1 4500 22.10.2019 17:48
Ostatni post: Szachista
  Książki do nauki C# olek23 14 14930 17.10.2019 13:06
Ostatni post: Ajgor
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 5722 16.09.2019 11:18
Ostatni post: Ajgor
  Błąd przy uruchamianiu programu w Java z wiersza poleceń Physicist 3 3630 30.08.2019 14:16
Ostatni post: Physicist
  Python z wiersza poleceń Physicist 15 16764 21.08.2019 20:14
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 6717 15.08.2019 07:41
Ostatni post: Szachista
  Menu wysuwane z boku patryk67 1 6255 07.08.2019 12:43
Ostatni post: aht
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 8193 18.06.2019 21:36
Ostatni post: fugaz
  Nauka do Olimpiady Informatycznej? piotr0905 1 7689 08.06.2019 16:50
Ostatni post: wlisik
Ściana Prosta gra w Builder C++ Kiranek1 1 7568 31.05.2019 15:20
Ostatni post: Szachista
  Menu (Nie widoczne długie opisy) wanhelsing 5 9698 28.04.2019 19:31
Ostatni post: koneton
  Skrypt usuwający pliki sylwiaa1 2 4186 28.04.2019 15:20
Ostatni post: sylwiaa1
  Środowisko do assemblera Physicist 4 8947 21.04.2019 14:04
Ostatni post: Ajgor
  VBA excel dmjs 6 9089 17.04.2019 10:20
Ostatni post: ptrick
  C++ - sens pogłębiania nauki gbr 5 8823 25.03.2019 12:53
Ostatni post: koneton