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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 54, средняя оценка - 4.83
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
#1

int main() VS void main() - C++

29.04.2011, 17:18. Просмотров 7974. Ответов 36
Метки нет (Все метки)

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

C++
1
2
3
int main() {
    return 0;
}
Т.е. в случае удачи выполнения программы должен возвращаться ноль.

Но я лично симпатизирую варианту

C++
1
2
3
void main() {
    ...
}
Рассудите)

Добавлено через 50 секунд
Симпатизирую из-за компактности.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2011, 17:18
Здравствуйте! Я подобрал для вас темы с ответами на вопрос int main() VS void main() (C++):

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

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

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

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

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

Void main or Int main - C++
Как правильнее использовать void или int в main? И обязательно возвращать return 0 в конце программы?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.04.2011, 17:24 #2
Ну в первом случае - это main - это главная функция, которая, по - хорошему, должна что-то возвращать! В данном случае, это 0, будем считать его кодом завершения программы!
Во втором случае - это подпрограмма, которая может ничего не возвращать, а просто что-то делать!
(выразился своими словами)
0
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
29.04.2011, 17:29  [ТС] #3
Витают в голове примерно те же противоречивые рассуждения)
0
Mиxaил
533 / 438 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.04.2011, 17:33 #4
Ну это, как бы, истина!

Добавлено через 44 секунды
Я, лично, изпользую
C++
1
2
3
4
int main()
{
    return 0;
}
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.04.2011, 17:37 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
void main() - НЕ СТАНДАРТНО. Запомните это и думайте головой.
Единственные корректные сигнатуры main - это int main() и int main(int argc, char* argv[]).
3
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
29.04.2011, 17:47  [ТС] #6
"Думать головой" - в Вашем понимании, это неукоснительное соблюдение стандартов? А в моём - как раз наоборот)) Что плохого в void main ?

"Ну в первом случае - это main - это главная функция, которая, по - хорошему, должна что-то возвращать!"

А кто сказал, что она должна что-то возвращать?
0
KuKu
1558 / 1036 / 78
Регистрация: 17.04.2009
Сообщений: 2,985
29.04.2011, 17:48 #7
Плохого в том, что если она не будет работать, то это ваши проблемы.
0
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
29.04.2011, 17:50  [ТС] #8
Так она же работает %)
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.04.2011, 17:52 #9
ramses, Стандарт это сказал. Несоответствии стандарту - это быдлокод, который ведет к непереносимости кода на другой компилятор.
Конечно на каком-нибудь borlande это работает, да подчас и на MSVS работает. Но стандарт говорит, что void main() - НЕ корректно.
2
Люльчик
1 / 1 / 0
Регистрация: 28.04.2011
Сообщений: 178
29.04.2011, 17:54 #10
[QUOTE=ramses;1599499]"Думать головой" - в Вашем понимании, это неукоснительное соблюдение стандартов? А в моём - как раз наоборот)) Что плохого в void main ?

Добавлено через 2 минуты
Цитата Сообщение от Mиxaил Посмотреть сообщение
Ну в первом случае - это main - это главная функция, которая, по - хорошему, должна что-то возвращать!

А кто сказал, что она должна что-то возвращать?
Ну собственно почему бы и нет? по моему она нужна для
выпoлняется глaвный цикл трaнсляции (это не что-то возвращать?)
Если бы там ещё аргументы этой функции были указаны, то можно было бы с нулём по варьировать.

P.S. или я ничего не поняла?
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
29.04.2011, 19:08 #11
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
void main() VS int main()
Есть язык, в языке есть правила! Русский язык - тоже язык, со своими правилами. Теперь представим сообщение на форуме, написаное вапреки всем правилам русково езыка при этом афтар поста ничево плохово в написаном нивидит (подумаиш не по правилам).
Лично я, когда перечитывал верхнюю строчку, чуть глаза себе не сломал) Это я к тому, что: "стоит ли следовать стандарту (читай "правилу") языка".
4
ramses
-2 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 55
29.04.2011, 19:26  [ТС] #12
Правила - одно, а стиль - другое. Если нечто явно не запрещено, то, следовательно, оно разрешено. Так я рассуждаю %) Как перестанет работать - тогда другое дело.
0
Kastaneda
Форумчанин
Эксперт С++
4653 / 2862 / 228
Регистрация: 12.12.2009
Сообщений: 7,271
Записей в блоге: 2
Завершенные тесты: 1
29.04.2011, 19:32 #13
Цитата Сообщение от ramses Посмотреть сообщение
Если нечто явно не запрещено, то, следовательно, оно разрешено.
А вот g++ такое не компилирует, говорит:
Bash
1
shit.cpp:2: error: ‘::main’ must return ‘int’
g++ знает, что такое "стандарт" )
получается: "что не разрешено, то запрещено"
0
neske
1495 / 862 / 82
Регистрация: 26.03.2010
Сообщений: 2,951
29.04.2011, 19:33 #14
ramses, странный вы человек все-таки)
не первая тема такая, вам говорят как нужно делать, как принято, но вы всеравно стоите на своем.
0
easybudda
Модератор
Эксперт CЭксперт С++
9625 / 5573 / 947
Регистрация: 25.07.2009
Сообщений: 10,708
29.04.2011, 19:42 #15
Цитата Сообщение от ForEveR Посмотреть сообщение
Единственные корректные сигнатуры main - это int main() и int main(int argc, char* argv[]).
Не-а! Вот так тоже можно, мало того - порой нужно даже!
C
1
int main(int argc, char ** argv, char ** envp) {}

ramses, нравится вам это, или нет, но функция main() таки должна возвращать целое значение. При чём обычно 0 - удачное завершение программы, число отличное от нуля - ошибка. Если не поставить
C
1
return 0;
или
C
1
2
3
4
5
#include <stdlib.h>
int main(void){
/*... */
exit(0);
}
или ещё каким нибудь образом возвращаемый код завершения программы, компилятор сам об этом позаботится. Но как-то правильнее всё-таки возвращать его самому. А вот
C
1
void main(){}
извращение и ни один вменяемый компилятор С/С++ такое не пропустит.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.04.2011, 19:42
Привет! Вот еще темы с ответами:

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

Использование int или void в качестве возвращаемого типа для main() - C++
Когда использовать int main, а когда void main?

Что и почему дописать в int main() чтобы функция void вернула значение - C++
Что и почему дописать в int main() чтобы функция void вернула значение? #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream.h&gt;...

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


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

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

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