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

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

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

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

21.08.2014, 22:41. Просмотров 3602. Ответов 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.08.2014, 22:41
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В чём смысл return в main()? (C++):

Почему в одних случаях пишут void main(), а в других случаях int main() {return 1;} - C++
Препод мне доказывает, что void в main`е писать неправильно, а объяснить не может почему. Кто расскажет?)

`main' must return `int' - C++
Почему возникает такая ошибка? И я правильно программу написал? Она должна считать сумму двух чисел! #include &lt;iostream&gt; #include...

Ошибка main' must return 'int' - C++
Line 6: error: '::main' must return 'int' compilation terminated due to -Wfatal-errors!!! Вот задаие::Данная матрица А (4,5), элементы...

Ошыбка File1.cpp(29): E2467 'main()' cannot return a value - C++
#include&lt;stdio.h&gt; #include&lt;conio.h&gt; #include&lt;math.h&gt; #define pi 3.14159 //Прототип функцій: float BitshPoverhnja (float rc,...

Dynamic_cast и static_cast: в чём смысл? - C++
Здравствуйте! Подскажите пожалуйста... В теории, как я понял, dynamic_cast является лишь приравниванием ссылки на 1 класс(допустим,...

В чём смысл использования указателей на функции - C++
Собсно,я не могу понять,в чём смысл использования указателей на функции,ведь можно вызывать функции напрямую.Или же это сделано чисто для...

41
Игорь с++
436 / 459 / 16
Регистрация: 26.01.2011
Сообщений: 2,032
21.08.2014, 22:53 #2
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Есть ли смысл возвращать значение переменной в main()?
Нету смысла
0
Убежденный
Ушел с форума
Эксперт С++
15691 / 7201 / 1138
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
21.08.2014, 22:55 #3
Цитата Сообщение от Andrey040601 Посмотреть сообщение
Есть ли смысл возвращать значение переменной в main()?
Есть смысл для внешних программ.
0 обычно принято считать кодом успеха, другие значения - ошибкой.
1
Справлюсь
23 / 23 / 5
Регистрация: 24.07.2014
Сообщений: 203
21.08.2014, 22:58 #4
есть:
1. если
C++
1
2
3
int main(){...}
а не
void main(){...}
то функция должна же что то возращать?
2.еси майн возращает не 0 значит программа заканчивается с ошибкой
0
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
21.08.2014, 23:10 #5
Погугли, зачем вообще нужен return. Изучи, что такое функции и процедуры. Да, и еще, если ты все таки хочешь что-то вернуть из программы, то так как у тебя "int main()", то ты должен вернуть переменную типа int. Но так, как уже сказано выше, принято считать, что если ты возвращаешь не нуль, то это будет значить, для той оболочки, которая запускает твою программу, что она завершилась неудачно, то есть с ошибкой. И вот то число, которые ты возвращаешь (кроме нуля) - код ошибки.
0
Etien
21 / 21 / 0
Регистрация: 26.01.2014
Сообщений: 182
21.08.2014, 23:11 #6
Формально - да.

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

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

В чём смысл return в main()?
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
22.08.2014, 01:59 #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]
1
some_name
Вежливость-главное оружие
226 / 224 / 55
Регистрация: 19.02.2013
Сообщений: 1,441
22.08.2014, 02:00 #12
Цитата Сообщение от Toshkarik Посмотреть сообщение
Так вообще писать нельзя.
0
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
22.08.2014, 02:01 #13
Ну насчёт C++ не уверен, но вот в Си точно так делать можно
0
ValeryS
Модератор
6682 / 5091 / 477
Регистрация: 14.02.2011
Сообщений: 17,092
22.08.2014, 02:02 #14
Цитата Сообщение от StasyanKO Посмотреть сообщение
Как видно на скриншоте ниже, так можно писать и на C++.
скриншот это не аргумент, тем более мелкомягкие, у них вообще свой язык С++
покажи место в стандарте где разрешается
Цитата Сообщение от Toshkarik Посмотреть сообщение
И в Си нельзя.
когда запретили?
за Си усилено не слежу,но раньше было можно
1
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
22.08.2014, 02:07 #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.
3
22.08.2014, 02:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2014, 02:07
Привет! Вот еще темы с ответами:

int main() и его return(узнать код завершения программы в cmd) - C++
Доброе утро всем. Вопрос таков. Если в конце программы мы поставим ретерн 15(а не 0), то как узнать чему равен мэйн, если не видеть этот...

Как работает и в чём смысл побитового И в заданном фрагменте кода? - C++
Как то раз в просторах сети нашёл вот такую запись. fun ((x + y) &amp; 1); Где в fun равняется первый элемент void fun (const int) ...

Я новичок создаю программу подскажите в чём смысл ошибок???? что-то с библиотекой glut ? - C++
Создаю программу моделирование гравитации ) выдавало ошибку что нет библиотеки glut ) нашёл в инете скопировал вставил после этого выдаёт...

Для чего нужна main и в чём принцип обхода массива в цикле - C++
Доброе время суток, хотелось бы услышать ответы на несколько легких вопросов. Зачем писать int main()\void main(), и что за этим стоит;...


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

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

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