Форум программистов, компьютерный форум CyberForum.ru

Возврат из функции int main() в С++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.96
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.08.2010, 09:25     Возврат из функции int main() в С++ #1
Судя по всему тема довольно холиварная. Вот хотел спросить как вы предпочитаете действовать. Относится естественно только к С++.

Пишите ли вы в конце main() return 0, что имхо правильнее. Или полагаетесь на то, что система в случае успешного завершения в любом случае вернет 0?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.08.2010, 09:25     Возврат из функции int main() в С++
Посмотрите здесь:

C++ int main() или int main(void)?
Что есть argc и **argv в функции int main(int argc, char **argv)? C++
int main() и int _tmain(int argc, _TCHAR* argv[]) C++
В чем разница между int main(){} и int main(void){}? C++
C++ Назначение аргументов функции int main
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
18.08.2010, 09:32     Возврат из функции int main() в С++ #2
если не писать то компил ошибку выдаст, что должно возвращаться значение
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.08.2010, 09:40  [ТС]     Возврат из функции int main() в С++ #3
oxotnik, Нет. Все в пределах цензуры. По дефолту в большинстве компиляторов возвращает 0. Проверьте. Важен сам вопрос, много ли людей возвращает и как все же правильнее
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
18.08.2010, 09:44     Возврат из функции int main() в С++ #4
oxotnik, Не выдаст..
Для этого кода
C++
1
2
3
4
5
#include<iostream>
 
int main(){
    return 0;
}
у меня компилятор сгенерировал такое
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
 
int main(){
00EC1350  push        ebp  
00EC1351  mov         ebp,esp  
00EC1353  sub         esp,0C0h  
00EC1359  push        ebx  
00EC135A  push        esi  
00EC135B  push        edi  
00EC135C  lea         edi,[ebp-0C0h]  
00EC1362  mov         ecx,30h  
00EC1367  mov         eax,0CCCCCCCCh  
00EC136C  rep stos    dword ptr es:[edi]  
    return 0;
00EC136E  xor         eax,eax  
}
00EC1370  pop         edi  
00EC1371  pop         esi  
00EC1372  pop         ebx  
00EC1373  mov         esp,ebp  
00EC1375  pop         ebp  
00EC1376  ret
и для этого
C++
1
2
3
4
5
#include<iostream>
 
int main(){
    //return 0;
}
тоже самое..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include<iostream>
 
int main(){
00C51350  push        ebp  
00C51351  mov         ebp,esp  
00C51353  sub         esp,0C0h  
00C51359  push        ebx  
00C5135A  push        esi  
00C5135B  push        edi  
00C5135C  lea         edi,[ebp-0C0h]  
00C51362  mov         ecx,30h  
00C51367  mov         eax,0CCCCCCCCh  
00C5136C  rep stos    dword ptr es:[edi]  
    //return 0;
}
00C5136E  xor         eax,eax  
00C51370  pop         edi  
00C51371  pop         esi  
00C51372  pop         ebx  
00C51373  mov         esp,ebp  
00C51375  pop         ebp  
00C51376  ret
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.08.2010, 09:52  [ТС]     Возврат из функции int main() в С++ #5
ISergey, Но как предпочитаете действовать вы?
Dzhej-Dzhej
Заблокирован
18.08.2010, 09:57     Возврат из функции int main() в С++ #6
а разве нельзя обьявить
C++
1
void main()
и использовать return по необходимости
или сейчас так не пишут
oxotnik
 Аватар для oxotnik
1584 / 1061 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
18.08.2010, 10:01     Возврат из функции int main() в С++ #7
и правда, gcc молчит, а студия помнится выдавала ошибки, она меня и приучила всегда возвращать значение, поэтому всегда пишу return 0;
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
18.08.2010, 10:05     Возврат из функции int main() в С++ #8
Dzhej-Dzhej, Нельзя. Ошибку получите..
http://codepad.org/xBXLiCql

Добавлено через 1 минуту
Lavroff, Лично мне особого труда не составляет в конце дописать return 0;
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.08.2010, 10:23  [ТС]     Возврат из функции int main() в С++ #9
ISergey, Кстати void main() на многих компилях глотает. На VS даже без ворнинга. Хотя это не правильно
radiohobbyt
 Аватар для radiohobbyt
192 / 190 / 4
Регистрация: 27.01.2009
Сообщений: 548
18.08.2010, 10:53     Возврат из функции int main() в С++ #10
коллега пишет даже
C
1
2
3
4
5
void funk(void)
{
blablabal();
return;
}
"чтоб не расслабляться". хотя это скорее от ассемблера осталось у него
Skoi
16 / 16 / 1
Регистрация: 31.07.2009
Сообщений: 54
18.08.2010, 11:26     Возврат из функции int main() в С++ #11
Ну как показал ISergey,
Assembler
1
xor         eax,eax
Ноль в любом случае будет возвращен, так что вопрос бессмысленный. Да и вообще, обсуждения не стоит.
CheshireCat
Эксперт С++
2907 / 1235 / 78
Регистрация: 27.05.2008
Сообщений: 3,307
18.08.2010, 11:51     Возврат из функции int main() в С++ #12
1. Стандарт (3.6.1) предусматривает только две сигнатуры функции main - int main() и int main(int argc, char** argv).
2. Тот же самый раздел Стандарта устанавливает, что, если поток выполнения достигает конца функции main без предложения return, это эквивалентно return 0;
yanyk1n
 Аватар для yanyk1n
4324 / 1455 / 152
Регистрация: 12.03.2009
Сообщений: 5,310
18.08.2010, 11:57     Возврат из функции int main() в С++ #13
Lavroff, есть такая неофициальная вещь (а может даже вполне и официальная) как правила хорошего кода на C++, т. е. как грамотно писАть и оформлять код (отступы, пробелы, комментарии и так далее).
И среди этих правил есть одно про рекомендуемое написание return 0 в конце main(). По мне лучше эти правила соблюдать, чтобы код был читабельным для любого Надо нарабатывать такие привычки
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
18.08.2010, 12:01  [ТС]     Возврат из функции int main() в С++ #14
k1ry4, Сегодня просто с человеком на форуме был спор. Вот и решил спросить, чтобы узнать что думают люди и как используют по этому поводу
yanyk1n
 Аватар для yanyk1n
4324 / 1455 / 152
Регистрация: 12.03.2009
Сообщений: 5,310
18.08.2010, 12:11     Возврат из функции int main() в С++ #15
Lavroff, просто с точки зрения компилятора код:
C++
1
2
3
4
5
int main()
{
   //some code
   return 0;
}
и
C++
1
2
3
4
int main()
{
   //some code
}
выглядит одинаковым, просто во втором случае return 0 вызывается неявно. Отсюда следует, что написание одного из варианта - дело программиста, как ему понравится, пусть и пишет
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9372 / 5422 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
18.08.2010, 12:13     Возврат из функции int main() в С++ #16
А я вообще за то, чтобы С-программы завершать функцией exit(). Вот в С++, правда, лучше этого не делать. Не так давно обсуждалось уже, почему...
Monte-Cristo
 Аватар для Monte-Cristo
2805 / 1370 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
18.08.2010, 12:45     Возврат из функции int main() в С++ #17
Цитата Сообщение от k1ry4 Посмотреть сообщение
Lavroff, есть такая неофициальная вещь (а может даже вполне и официальная) как правила хорошего кода на C++, т. е. как грамотно писАть и оформлять код (отступы, пробелы, комментарии и так далее).
сюда еще входит именование переменных, функций, классов, методов.. и во многих компаниях - эти правила разные так что это не закон.. скорее, образец к подражанию. важно не то, чтоб твой стиль был копией кого-то, важно чтоб твой стиль был читабелен и ты придерживался его на протяжении всего кода.


Что касается int main() - я return 0 пишу. Никогда не знаешь, как поведет себя компилятор без него, а с ним - все будет в порядке.
yanyk1n
18.08.2010, 12:49
  #18

Не по теме:

Monte-Cristo, в любом случае я пытался донести информацию, которую ты мне поведал

Mencey
 Аватар для Mencey
145 / 92 / 7
Регистрация: 22.07.2010
Сообщений: 424
18.08.2010, 13:31     Возврат из функции int main() в С++ #19
Лично я всегда пишу в C++ с return 0; (привычка из C).

Не по теме:

Хотел выложить страницу из книги "Философия C++", но там написано, что Никакая часть книги не может быть воспроизведена в какой бы то нибыло форме без письменого разрешения владельцев авторских прав.
Люди что делать?

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2010, 13:33     Возврат из функции int main() в С++
Еще ссылки по теме:

C++ Расчёт значений двумерного массива и их возврат в main() с однократным вызовом функции
Какой новые синтаксис: int main() VS. void main() C++
C++ В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.?

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
yanyk1n
18.08.2010, 13:33     Возврат из функции int main() в С++
  #20

Не по теме:

Mencey, раз сказано нельзя, значит нельзя.

Yandex
Объявления
18.08.2010, 13:33     Возврат из функции int main() в С++
Ответ Создать тему
Опции темы

Текущее время: 23:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru