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 5358 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
Scared Ipad Pro programowanie? NissmoOne 4 11161 06.10.2018 12:22
Ostatni post: NissmoOne
  C# pierwsza pusta komórka Excel DonCorleone 0 10077 21.09.2018 16:58
Ostatni post: DonCorleone
  .bat nie kompresuje plików GIENTY 3 10585 06.09.2018 07:20
Ostatni post: broda99
  problem z programem .bat wiktrom12 4 11786 30.08.2018 08:25
Ostatni post: wiktrom12
  Silnik do gier ZigglerGames 1 10426 23.08.2018 09:03
Ostatni post: Szachista
  Chciałbym zrobić prosty plik exe z jedną funkcją densour 4 11192 09.08.2018 16:24
Ostatni post: Ajgor
  Który język wybrać do stworzenia aplikacji synchronizujące pliki z urządzeniem mobiln Elemental 2 2705 18.07.2018 12:05
Ostatni post: Ajgor
  Pomysł napisania programu ROM FireBytes 3 11686 28.06.2018 16:56
Ostatni post: FireBytes
  [VBA] Tworzenie nowego arkusza z danymi z TextBox'a Pioro 4 12096 19.06.2018 23:24
Ostatni post: broda99
  Potwierdzenie na maila po wysłaniu pliku coci 0 11046 13.06.2018 20:37
Ostatni post: coci
  Pieczętowanie Archiwum Jar - Po co? wanhelsing 3 11591 19.05.2018 20:55
Ostatni post: koneton
  Wyszukiwarka w spawnerze nie reaguje na polskie znaki kazik666 0 11170 16.05.2018 12:04
Ostatni post: kazik666
  BASH symulator silnika dawswi1 3 11224 13.05.2018 10:43
Ostatni post: Szachista
  Autohotkey automatyczny zapis TheProgson 0 10737 07.05.2018 21:27
Ostatni post: TheProgson
  VBA Pobieranie wybranych plików z danymi julietta03 1 11091 04.05.2018 08:25
Ostatni post: broda99