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

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

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

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

21.08.2014, 22:41. Просмотров 3494. Ответов 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
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
22.08.2014, 02:07 #16
самое смешное что ушли от темы то
Цитата Сообщение от Andrey040601 Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
#include<iostream>
using namespace std;
 
int main()
{
 int a;
cin >> a;
return a;
}
вот на такой код действительно остается только репу чесать, а зачем здесь возвращать введенное значение?
что с ним система делать будет?
напоминает анекдот
-Доктор, я жить буду?
-А смысл?
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
22.08.2014, 02:11 #17
Цитата Сообщение от ValeryS Посмотреть сообщение
когда запретили?
Да вроде еще в 99, вырезка выше из 11, но там ничего не изменилось. Вроде.

Добавлено через 3 минуты
Ну и вот цитата из FAQ:
What's the deal with void main()

Under regular function calling/returning in C and C++, if your don't ever want to return anything from a function, you define it's return type as void. For example, a function that takes no arguments, and returns nothing can be prototyped as:

void foo(void);

A common misconception is that the same logic can be applied to main(). Well, it can't, main() is special, you should always follow the standard and define the return type as int. There are some exceptions where void main() is allowed, but these are on specialised systems only. If you're not sure if you're using one of these specialised systems or not, then the answer is simply no, you're not. If you were, you'd know it.

Be warned that if you post your "void main" code on the forums, you're going to get told to correct it. Responding with "my teacher said it's OK" is no defence; teachers have a bad habit of being wrong. Be safe, and post only standard code, and you'll find people concentrate on answering your other problems, rather than waste time telling you about this type of thing.
3
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
22.08.2014, 02:15 #18
Цитата Сообщение от Toshkarik Посмотреть сообщение
Да вроде еще в 99,
посмотрю
но Keil в режиме 99 на такой код
C
1
2
3
4
5
6
7
int main()
{
while(1)
 {
 }
return 0;
}
варнингами плюется, дескать до return дело не дойдет
пишу так
C
1
2
3
4
5
6
7
void main()
{
while(1)
 {
 }
 
}
Добавлено через 1 минуту
Цитата Сообщение от Toshkarik Посмотреть сообщение
There are some exceptions where void main() is allowed, but these are on specialised systems only.
все таки иногда разрешается
0
StasyanKO
9 / 9 / 0
Регистрация: 13.04.2013
Сообщений: 63
22.08.2014, 02:17 #19
В этой вырезке написано, что следует, но не написано, что это обязательно. А Си я особо не увлекаюсь, но очень часто, когда искал информацию, например, о программировании микроконтроллеров, встречал void main()
0
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
22.08.2014, 02:20 #20
Ну собственно из того же FAQ'а:
Цитата Сообщение от Toshkarik Посмотреть сообщение
There are some exceptions where void main() is allowed, but these are on specialised systems only.
Добавлено через 28 секунд
UPD: ValeryS уже это написал
1
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,930
22.08.2014, 02:21 #21
Цитата Сообщение от StasyanKO Посмотреть сообщение
о программировании микроконтроллеров, встречал void main()
правильно, возврата то ведь не будет
о чем и речь
Цитата Сообщение от Toshkarik Посмотреть сообщение
There are some exceptions where void main() is allowed, but these are on specialised systems only.
А в плюсах запрещено, нет такой лазейки

Добавлено через 50 секунд

Не по теме:

Toshkarik, синхронно пишем

3
Toshkarik
1141 / 858 / 51
Регистрация: 03.08.2011
Сообщений: 2,386
Завершенные тесты: 1
22.08.2014, 02:21 #22
Цитата Сообщение от StasyanKO Посмотреть сообщение
что следует, но не написано, что это обязательно.
Написано, что должна быть ( shall be ).
2
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,019
22.08.2014, 02:22 #23
По стандарту С++ нельзя, в С допускается.

Возвращаемое значение программы может быть использовано другими программами для того, чтобы узнать результат работы выполненной.

По стандарту С++ (ещё 98) допускается return 0; опускать, в этом случае компилятор при завершении последней операции из функции main посчитает, что программа отработала корректно и возвратит 0 как сигнал успешного завершения.
1
Alexandr_1982
177 / 74 / 17
Регистрация: 04.11.2013
Сообщений: 385
Записей в блоге: 4
22.08.2014, 04:27 #24
В ОС UNIX есть трубки (pipes). Return в main передает значение следующей программе, вызываемой по последовательности в трубке. Трубка создаётся средствами shell (командного интерпретатора ОС)
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,041
22.08.2014, 05:12 #25
Цитата Сообщение от Alexandr_1982 Посмотреть сообщение
В ОС UNIX есть трубки (pipes).
s/трубки/каналы/
Цитата Сообщение от Alexandr_1982 Посмотреть сообщение
Return в main передает значение следующей программе, вызываемой по последовательности в трубке.
А вот с этого момента поподробнее. Канал всего лишь объединяет stdout одного процесса c stdin другого.
Цитата Сообщение от Alexandr_1982 Посмотреть сообщение
Трубка создаётся средствами shell (командного интерпретатора ОС)
Только частный случай (если брать конвейер cmd1 | cmd2 | cmd3). В общем случае - любым процессом с пом. системного вызова pipe.
0
intern
15 / 15 / 6
Регистрация: 30.03.2014
Сообщений: 74
Завершенные тесты: 2
22.08.2014, 06:46 #26
Цитата Сообщение от Etien Посмотреть сообщение
Код возврата main() попадает в систему, по моему в какую-то системную переменную, из которой его можно увидеть другой программой.
Windows - echo %ERRORLEVEL%
*nix - echo $?
0
Справлюсь
23 / 23 / 5
Регистрация: 24.07.2014
Сообщений: 203
23.08.2014, 10:03 #27
ребята, давайте обратимся к учебнику, смотрим любой раздел любой главы после заголовка "Уроки по программированию на языке Си++", какой там тип возращаемого значения у функции main?
0
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,041
23.08.2014, 10:14 #28
Справлюсь, предлагаю обращаться не к сомнительным учебникам, а к достоверным книгам (Страуструп) или к стандарту, выдержку из которого уже приводили в теме: В чём смысл return в main()?
1
gru74ik
Модератор
Эксперт CЭксперт С++
4169 / 1817 / 198
Регистрация: 20.02.2013
Сообщений: 4,961
Записей в блоге: 21
23.08.2014, 10:16 #29
Цитата Сообщение от Справлюсь Посмотреть сообщение
ребята, давайте обратимся к учебнику
Учебник - это, конечно, прекрасно Но тут такие холивары иногда (1, 2), бывает, на (почти что) пустом месте начинаются, что хоть как-то спасает цитирование стандарта и книжек создателя C++, да и то не всегда.

Добавлено через 2 минуты

Не по теме:

Цитата Сообщение от 0x10 Посмотреть сообщение
предлагаю обращаться не к сомнительным учебникам, а к проверенным книгам (Страуструп) или к стандарту
Синхронно пишем ))

1
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,041
23.08.2014, 10:16 #30
Цитата Сообщение от gru74ik Посмотреть сообщение
Учебник - это, конечно, прекрасно
При условии, что учебник современный, качественный и прочее. В том архиве везде void main().
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2014, 10:16
Привет! Вот еще темы с ответами:

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(), и что за этим стоит;...


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

Или воспользуйтесь поиском по форуму:
30
Yandex
Объявления
23.08.2014, 10:16
Ответ Создать тему
Опции темы

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