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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.95
Andrey040601
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 127
Завершенные тесты: 5
#1

В чём смысл return в main()? - C++

21.08.2014, 22:41. Просмотров 3303. Ответов 41
Метки нет (Все метки)

Есть ли смысл возвращать значение переменной в main()?
Если да - зачем?
C++
1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
 
int main()
{
 int a;
cin >> a;
return a;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Игорь с++
434 / 457 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
21.08.2014, 22:53     В чём смысл return в main()? #2
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Есть ли смысл возвращать значение переменной в main()?
Нету смысла
Убежденный
Системный программист
Эксперт С++
15298 / 6930 / 1096
Регистрация: 02.05.2013
Сообщений: 11,340
Завершенные тесты: 1
21.08.2014, 22:55     В чём смысл return в main()? #3
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Есть ли смысл возвращать значение переменной в main()?
Есть смысл для внешних программ.
0 обычно принято считать кодом успеха, другие значения - ошибкой.
Справлюсь
23 / 23 / 5
Регистрация: 24.07.2014
Сообщений: 203
21.08.2014, 22:58     В чём смысл return в main()? #4
есть:
1. если
C++
1
2
3
int main(){...}
а не
void main(){...}
то функция должна же что то возращать?
2.еси майн возращает не 0 значит программа заканчивается с ошибкой
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
21.08.2014, 23:10     В чём смысл return в main()? #5
Погугли, зачем вообще нужен return. Изучи, что такое функции и процедуры. Да, и еще, если ты все таки хочешь что-то вернуть из программы, то так как у тебя "int main()", то ты должен вернуть переменную типа int. Но так, как уже сказано выше, принято считать, что если ты возвращаешь не нуль, то это будет значить, для той оболочки, которая запускает твою программу, что она завершилась неудачно, то есть с ошибкой. И вот то число, которые ты возвращаешь (кроме нуля) - код ошибки.
Etien
20 / 20 / 0
Регистрация: 26.01.2014
Сообщений: 176
21.08.2014, 23:11     В чём смысл return в main()? #6
Формально - да.

А нужно бывает, если Вы пишете группы формально независимых программ, каждая из которых должна знать отработала-ли предыдущая и правильно ли. Код возврата main() попадает в систему, по моему в какую-то системную переменную, из которой его можно увидеть другой программой. Очень давно не пользовался. Усли нужно детальнее - то не ко мне.

Всегда Ваш - Etien.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
22.08.2014, 01:39     В чём смысл return в main()? #7
Цитата Сообщение от Справлюсь Посмотреть сообщение
void main(){...}
Так вообще писать нельзя.
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
22.08.2014, 01:40     В чём смысл return в main()? #8
Цитата Сообщение от Toshkarik Посмотреть сообщение
Так вообще писать нельзя.
Можно, но это уже Си.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
22.08.2014, 01:42     В чём смысл return в main()? #9
Цитата Сообщение от StasyanKO Посмотреть сообщение
Можно, но это уже Си.
И в Си нельзя.
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
22.08.2014, 01:52     В чём смысл return в main()? #10
Цитата Сообщение от Toshkarik Посмотреть сообщение
И в Си нельзя.
Как видно на скриншоте ниже, так можно писать и на C++. А на Си тем более.

В чём смысл return в main()?
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
22.08.2014, 01:59     В чём смысл return в main()? #11
Если это пропускает компилятор, то это не означает, что так писать можно. В стандарте указано, что возвращаемый тип должен быть int. GCC этот код не пропустит. В Си еще может пропустит с предупрежением, так как много legacy-кода до сих пор используется.


Код
g++ test.c -o test
test.c:1:11: error: ‘::main’ must return ‘int’
test.c: In function ‘int main()’:
test.c:3:4: error: return-statement with no value, in function returning ‘int’ [-fpermissive]
Код
gcc test.c -o test -pedantic
test.c:1:6: warning: return type of ‘main’ is not ‘int’ [-Wmain]
some_name
Вежливость-главное оружие
221 / 221 / 55
Регистрация: 19.02.2013
Сообщений: 1,431
22.08.2014, 02:00     В чём смысл return в main()? #12
Цитата Сообщение от Toshkarik Посмотреть сообщение
Так вообще писать нельзя.
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
22.08.2014, 02:01     В чём смысл return в main()? #13
Ну насчёт C++ не уверен, но вот в Си точно так делать можно
ValeryS
Модератор
6552 / 5018 / 463
Регистрация: 14.02.2011
Сообщений: 16,739
22.08.2014, 02:02     В чём смысл return в main()? #14
Цитата Сообщение от StasyanKO Посмотреть сообщение
Как видно на скриншоте ниже, так можно писать и на C++.
скриншот это не аргумент, тем более мелкомягкие, у них вообще свой язык С++
покажи место в стандарте где разрешается
Цитата Сообщение от Toshkarik Посмотреть сообщение
И в Си нельзя.
когда запретили?
за Си усилено не слежу,но раньше было можно
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2014, 02:07     В чём смысл return в main()?
Еще ссылки по теме:
C++ Как работает и в чём смысл побитового И в заданном фрагменте кода?
Я новичок создаю программу подскажите в чём смысл ошибок???? что-то с библиотекой glut ? C++
Для чего нужна main и в чём принцип обхода массива в цикле C++
Ошибка в функции main: "expected ';' before 'return'" C++
C++ В чем разница между return и return false/true

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

Или воспользуйтесь поиском по форуму:
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
22.08.2014, 02:07     В чём смысл return в main()? #15
Во-первых - это раздел C++. Во-вторых - вырезка из стандарта:

The function called at program startup is named main. The implementation declares no prototype for this function. It shall be defined with a return type of int and with no parameters:

int main(void) { /* ... */ }

or with two parameters (referred to here as argc and argv, though any names may be used, as they are local to the function in which they are declared):

int main(int argc, char *argv[]) { /* ... */ }

or equivalent; or in some other implementation-defined manner.
Yandex
Объявления
22.08.2014, 02:07     В чём смысл return в main()?
Ответ Создать тему
Опции темы

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