Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.96
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,545
Завершенные тесты: 3
#1

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

18.08.2010, 09:25. Просмотров 3555. Ответов 35
Метки нет (Все метки)

Судя по всему тема довольно холиварная. Вот хотел спросить как вы предпочитаете действовать. Относится естественно только к С++.

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

В чем разница между int main(){} и int main(void){}? - C++
Только недавно начал изучать язык, и появилось несколько вопросов: 1) в чем разница между int main(){} и int main(void){}? 2) в чем...

Расчёт значений двумерного массива и их возврат в main() с однократным вызовом функции - C++
Добрый день. Пусть некоторая функция f(a,b,...) производит расчет и записывает данные в двумерный массив M, возвращая его указатель...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? - C++
Не понимаю, с чего начинать. Заранее спс.

Назначение аргументов функции int main - C++
int main(int argc, char *argv) что эти параметры делают и какие у них функции, объясните пожалуйста!

int main() или int main(void)? - C++
чем отличается : не сообщаю о наличии аргументов функция не принимает никаких аргументов.......

int main() и int _tmain(int argc, _TCHAR* argv[]) - C++
При создании нового консольного приложения Microsoft Visual С++ 2010 Express создает начальный шаблон #include "stdafx.h" int...

35
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
18.08.2010, 12:13 #16
А я вообще за то, чтобы С-программы завершать функцией exit(). Вот в С++, правда, лучше этого не делать. Не так давно обсуждалось уже, почему...
0
Monte-Cristo
2790 / 1376 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
18.08.2010, 12:45 #17
Цитата Сообщение от k1ry4 Посмотреть сообщение
Lavroff, есть такая неофициальная вещь (а может даже вполне и официальная) как правила хорошего кода на C++, т. е. как грамотно писАть и оформлять код (отступы, пробелы, комментарии и так далее).
сюда еще входит именование переменных, функций, классов, методов.. и во многих компаниях - эти правила разные так что это не закон.. скорее, образец к подражанию. важно не то, чтоб твой стиль был копией кого-то, важно чтоб твой стиль был читабелен и ты придерживался его на протяжении всего кода.


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

Не по теме:

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

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

Не по теме:

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

0
yanyk1n
18.08.2010, 13:33
  #20

Не по теме:

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

0
Mencey
147 / 94 / 7
Регистрация: 22.07.2010
Сообщений: 424
18.08.2010, 13:43 #21
Цитата Сообщение от k1ry4 Посмотреть сообщение
Mencey, раз сказано нельзя, значит нельзя.
Придётся своими словами!

Если в main не указано возращающее значени, то компилятор(по стандарту) автоматически генерирует команду return 0, но если компилятор выдаёт предупреждения то он не соответсвует стандарту C++. В книги все программы написаны без return 0.


Цитата Сообщение от Mencey Посмотреть сообщение
Лично я всегда пишу в C++ с return 0; (привычка из C).
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.08.2010, 15:59 #22
Да, сейчас обратил внимание, что Страуструп в своей книжке пишет примеры программ без return 0. А еще я вычитал (не в его книжке), что некоторые среды C++ вообще игнорируют это возвращаемое значение. Оказывается мы бессмысленным сишным рудиментом пользовались!
1
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
18.08.2010, 16:44 #23
Mr.X, может это и так, но я по превычке всё равно ретурн писать буду :P
0
half-node
21 / 18 / 4
Регистрация: 12.08.2010
Сообщений: 206
18.08.2010, 16:47 #24
Дядечка Р.Лафоре говорит: "Пиши return 0! Пиши, кому говорят!?".
А т.к. первая книга это как первый секс - запоминается навсегда. То, видимо, я всегда буду писать return
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
18.08.2010, 19:43 #25
Кстати, в стандарте тоже в примерах с int main() нигде не используется return 0 (кроме пункта 22.2.8, который наверно писал особый фанат ретурна). Вообще, какое-то глуповатое решение в стандарте, - ввели бы void main(), и не мучали себя и людей.
Интересно, а в C++0x функция void main() присутствует?
1
easybudda
Модератор
Эксперт CЭксперт С++
9695 / 5645 / 963
Регистрация: 25.07.2009
Сообщений: 10,849
18.08.2010, 23:09 #26
Цитата Сообщение от Mr.X Посмотреть сообщение
ввели бы void main(), и не мучали себя и людей.
Программа должна вернуть вызвавшей её системе целое число, означающее код возврата. Просто тут компилятор работает по той логике, что если специально код возврата не установлен, значит всё прошло, как задумано и можно вернуть ноль. Но по-моему всё-таки не плохая привычка писать return 0; в конце программы...
0
Monte-Cristo
2790 / 1376 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
18.08.2010, 23:17 #27
Цитата Сообщение от Mr.X Посмотреть сообщение
Вообще, какое-то глуповатое решение в стандарте, - ввели бы void main(), и не мучали себя и людей.
Есть одно но. Есть много споров о значимости возвращаемого значения для ОС.. одни говорят что нужно, другие что нет.. я в эти спору не лезу, меня это колышет совсем. Но где-то слышал, что это очень важная деталь при программировании микроконтроллеров. И без нее - ну никак. Поэтому, я предпочитаю писать ретурн 0.

p.s: кроме того, никто не запрещает дебажить путем отлова возвращаемых значений.
0
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
19.08.2010, 09:54 #28
Возвращаемое значение программы важно в том случае, если в зависимости от успешного или неудачного завершения программы должны выполняться другие:
Bash
1
2
3
4
#!/bin/bash
./application && echo success #Если программа вернет 0, тогда запустится echo
# Или так
! ./application && echo failure #Если программа вернет не 0, тогда запустится echo
0
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
19.08.2010, 12:36 #29
Цитата Сообщение от easybudda Посмотреть сообщение
Программа должна вернуть вызвавшей её системе целое число, означающее код возврата. Просто тут компилятор работает по той логике, что если специально код возврата не установлен, значит всё прошло, как задумано и можно вернуть ноль. Но по-моему всё-таки не плохая привычка писать return 0; в конце программы...
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Есть одно но. Есть много споров о значимости возвращаемого значения для ОС.. одни говорят что нужно, другие что нет.. я в эти спору не лезу, меня это колышет совсем. Но где-то слышал, что это очень важная деталь при программировании микроконтроллеров. И без нее - ну никак. Поэтому, я предпочитаю писать ретурн 0.

p.s: кроме того, никто не запрещает дебажить путем отлова возвращаемых значений.
Не вижу тут противоречия. Почему бы функции void main() втихаря от пользователя не вернуть системе этот ноль, если он ей так нужен. Мне кажется, что это будет меньшим издевательством над здравым смыслом, чем int main() без ретурна.
А если пользователь захочет что-то осмысленное вернуть системе, и даже знает зачем ей это нужно, то он может int main() использовать.
0
nikkka
Мат в 32 хода
235 / 170 / 8
Регистрация: 10.09.2009
Сообщений: 1,096
19.08.2010, 12:44 #30
а разве void main() неправельно?
0
19.08.2010, 12:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.08.2010, 12:44
Привет! Вот еще темы с ответами:

Почему у функции main() тип возвращаемого значения - int? - C++
Здравствуйте! В языке C# main "свободный": void main (). Логично, поскольку программа - это набор операторов, которые в общем смысле ничего...

Что есть argc и **argv в функции int main(int argc, char **argv)? - C++
Здраствуйте, уважаемые кодеры! Что означает argc и **argv в функции int main(int argc, char **argv), ни как не могу понять эти переменные...

Какой новые синтаксис: int main() VS. void main() - C++
Долго не занимался программированием , но тут жена решила поучится , да и сам повторить ,так вот столкнулся с такой темой на 4pda может...

Какая разница между int main и void main? - C++
какая разница между (int main) i (void main)?


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

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru