• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

funkcja main w programowaniu c++

+1 głos
3,269 wizyt
pytanie zadane 3 lipca 2018 w C i C++ przez Sic Dyskutant (8,510 p.)

Moje pytanie dotyczy głównie sensu i działania funkcji main().

Zazwyczaj schemat tworzenia programu wygląda tak:

....
int main()
{
......
return 0; //w bardzo wielu przypadka zwraca 0
}...

i teraz moje pytanie czy zawsze główna funkcja musi mieć typ danych ? Czy może go nie mieć i nic nie zwracać ?

A jeżeli tak to jakie są tego konsekwencje ?

1
komentarz 3 lipca 2018 przez Mariusz08 Maniak (62,280 p.)

Czy może go nie mieć i nic nie zwracać ?

A jeżeli tak to jakie są tego konsekwencje ?

Programowanie to eksperymenty - spróbuj usunąć return, skompiluj program i zobacz co się stanie ;)

4 odpowiedzi

+3 głosów
odpowiedź 3 lipca 2018 przez monika90 Pasjonat (22,940 p.)
edycja 3 lipca 2018 przez monika90
Każda funkcja w C++ ma jakiś typ który zwraca (może być to void, są też wyjątki jak konstruktory i destruktory), kiedy deklarujesz funkcję to musisz ten typ podać, bez tego masz błąd składni. Dodatkowo w przypadku main typem tym musi być int.

Być może kompilator, którego używasz akceptuje main bez podanego typu, ale to jest niestandardowe zachowanie i jest tylko po to by zachować kompatybilność z jakimś bardzo starym kodem, który powstał w czasach przed standardem z 1998 roku.
+1 głos
odpowiedź 3 lipca 2018 przez profesorek96 Szeryf (91,400 p.)
Wszystkie programy w C++ muszą mieć funkcje main. Od niej zaczyna życie każdy program. Wyjątkiem są biblioteki, one nie zawierają funkcji o nazwie main. Musi zwracać, jeśli zwraca zero to info dla systemu że program zakończył swoje działanie poprawnie jak by zwróciła inną wartość to jest jednoznaczne info że jest jakiś błąd.
+1 głos
odpowiedź 3 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)

Jeśli chodzi o C++, to nawet gdy nie dodass, kompilator doda to sam. Wartość ta jest ta jest zwracana do systemu. Gdy działanie programu się skończy w zmiennej errorlevel będzie kod wyjscia (chyba tak się to nazywa, exit code) ostatniego programu. Zobacz to sobie.

C:/Users/Abc/Desktop> a.exe
C:/Users/Abc/Desktop> echo %errorlevel%

W C, gdzie trzeba return X dać nie wiem co się stanie jeśli nie dasz. Zapewne errorem kompilatora.

 

Zazwyczaj wartość 0 oznacza poprawne działanie programu, a każda inna błąd.

komentarz 3 lipca 2018 przez Sic Dyskutant (8,510 p.)

Tak wiem że musi być 'main()', jednak mi się rozchodzi o typ danych (zazwyczaj jest to 'int') czy można bez jego wykorzystywania programy (bez żadnych konsekwencji)?

Napisałem program:

#include <iostream>

main()
{
int m = 5; std::cout << m;
}

Dokładnie coś takiego program się skompilował i włączyć oraz pokazał wartość 5.

komentarz 3 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)
Z tego co widziałem na godbolt.org ta wersja oraz wersja z intem wygląda tak samo (w assemblym) więc pewnie kompilator to dodaje.
0 głosów
odpowiedź 3 lipca 2018 przez Ptaszor3 Użytkownik (900 p.)
funkcja główna nie musi zwracać żadnej wartości. Tyle wiem.
komentarz 3 lipca 2018 przez Ptaszor3 Użytkownik (900 p.)
#include <iostream>

using namespace std;

int main()
{
    int l = 1;
    cout << l;
}

Dowód dla niedowiarków.

komentarz 3 lipca 2018 przez Hiskiel Pasjonat (22,830 p.)
Ponieważ kompilator sam doda.
komentarz 3 lipca 2018 przez Ptaszor3 Użytkownik (900 p.)
Rozumiem i dziękuje!

Podobne pytania

0 głosów
1 odpowiedź 997 wizyt
+1 głos
2 odpowiedzi 580 wizyt
pytanie zadane 3 kwietnia 2021 w C i C++ przez Dawidziu Bywalec (2,630 p.)
0 głosów
1 odpowiedź 291 wizyt
pytanie zadane 8 stycznia 2020 w C i C++ przez Mavimix Dyskutant (8,420 p.)

93,426 zapytań

142,421 odpowiedzi

322,647 komentarzy

62,787 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...