Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Mnemonik39
20 / 3 / 2
Регистрация: 06.12.2015
Сообщений: 227
Завершенные тесты: 1
1

Почему в одних случаях пишут void main(), а в других случаях int main() {return 1;}

09.12.2016, 21:17. Просмотров 794. Ответов 7
Метки нет (Все метки)

Препод мне доказывает, что void в main`е писать неправильно, а объяснить не может почему. Кто расскажет?)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2016, 21:17
Ответы с готовыми решениями:

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

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

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

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

Void main or Int main
Как правильнее использовать void или int в main? И обязательно возвращать...

7
Peoples
1352 / 841 / 749
Регистрация: 06.02.2016
Сообщений: 2,243
Записей в блоге: 18
Завершенные тесты: 4
09.12.2016, 21:25 2
Вот
1
Миниатюры
Почему в одних случаях пишут void main(), а в других случаях int main() {return 1;}  
Ferrari F1
792 / 522 / 156
Регистрация: 27.01.2015
Сообщений: 3,025
Записей в блоге: 1
Завершенные тесты: 1
09.12.2016, 21:34 3
Peoples, это что за книга?
0
Peoples
1352 / 841 / 749
Регистрация: 06.02.2016
Сообщений: 2,243
Записей в блоге: 18
Завершенные тесты: 4
09.12.2016, 21:36 4
Ferrari F1, Джосаттис Н.М. - Стандартная библиотека C++. Справочное руководство - 2014. Просто кладезь информации
1
Mnemonik39
20 / 3 / 2
Регистрация: 06.12.2015
Сообщений: 227
Завершенные тесты: 1
09.12.2016, 21:37  [ТС] 5
Но вес же пишут и void main(){}, вот не пойму для чего тогда это надо?
0
Croessmah
++Ͻ
14740 / 8422 / 1597
Регистрация: 27.09.2012
Сообщений: 20,714
Записей в блоге: 2
Завершенные тесты: 1
09.12.2016, 22:06 6
Цитата Сообщение от Mnemonik39 Посмотреть сообщение
а объяснить не может почему
Потому что того требует стандарт языка.
Цитата Сообщение от Mnemonik39 Посмотреть сообщение
Но вес же пишут и void main(){}
Стандарт не запрещает компиляторам такое поддерживать,
но при этом код теряет переносимость.
Компиляторы должны обязательно поддерживать только две версии main:
C++
1
2
int main() {}
int main(int, char**) {}
т.е.
C++
1
2
int main() {} //должен поддерживаться реализацией компилятора
void main() {} //реализация не обязана такое поддерживать
0
GbaLog-
Любитель чаепитий
3167 / 1473 / 465
Регистрация: 24.08.2014
Сообщений: 5,207
Записей в блоге: 1
Завершенные тесты: 2
09.12.2016, 22:49 7
Цитата Сообщение от 3.6.1.2
An implementation shall not predefine the main function. This function shall not be overloaded. It shall
have a return type of type int, but otherwise its type is implementation-defined. All implementations shall
allow both of the following definitions of main:
int main() { /* ... */ }
and
int main(int argc, char* argv[]) { /* ... */ }
In the latter form argc shall be the number of arguments passed to the program from the environment
in which the program is run. If argc is nonzero these arguments shall be supplied in argv[0]
through argv[argc-1] as pointers to the initial characters of null-terminated multibyte strings (ntmbs
s) (17.5.2.1.4.2) and argv[0] shall be the pointer to the initial character of a ntmbs that represents the
name used to invoke the program or "". The value of argc shall be non-negative. The value of argv[argc]
shall be 0. [ Note: It is recommended that any further (optional) parameters be added after argv. — end
note ]

Не по теме:

То чувство, когда вспомнил пункт стандарта, а не поиском нашёл. :D

1
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4803 / 2454 / 687
Регистрация: 18.10.2014
Сообщений: 4,229
09.12.2016, 23:14 8
Цитата Сообщение от Mnemonik39 Посмотреть сообщение
Но вес же пишут и void main(){}, вот не пойму для чего тогда это надо?
void main() не пишут. А если кто-то это делает - то только по незнанию. Компилятор может и разрешать void main() в качестве рсаширения (как он может разрешать и вообще что угодно), но к стандартным языкам С и С++ это никакого отношения не имеет. В С и С++ main должна всегда возвращать int.

Что же касается "для чего тогда это надо"... Любители void main() иногда пытаются оправдывать эту манеру тем, что в таком случае нет необходимости писать return 0 в конце функции - это якобы экономит лишнюю строчку кода. На самом же деле даже в int main() писать return 0 в конце функции совсем не нужно - языки С и С++ гарантируют, что main все равно автоматически вернет 0.
0
09.12.2016, 23:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2016, 23:14

int main() VS void main()
Вот товарищ Герберт Шилдт считает, что функция main() должна вид int main()...

От void main() к int main()
Ребят, недавно начал обучаться программированию на cpp на Windows. Перешёл на...

Что и почему дописать в int main() чтобы функция void вернула значение
Что и почему дописать в int main() чтобы функция void вернула значение? ...


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

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

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