Author Topic: int main () и void main ()  (Read 871 times)

0 Members and 1 Guest are viewing this topic.

Offline From_Odessa

  • Blogger
  • *
  • Posts: 50818
  • Gender: Male
  • Кожаный проказник-алигатор
on: December 20, 2019, 18:45
Не знаю, как в других языках, а в С++ главную функцию можно объявить возвращающей целочисленное значение или пустое значение. И в целом на программу это обычно не влияет. Так есть ли тут какая-то предпочтительность? И если да, то почему?
Шансы есть всегда. Даже, когда их нет (с) М. Фоменко
Многие думают, что футбол - это вопрос жизни и смерти. Ерунда. Футбол куда важнее (с) Б. Шенкли
Программирование - ещё один вид искусства (с) From_Odessa
Ничто не делает ужин таким вкусным, как отсутствие обеда (с) М. Жванецкий

Offline wandrien

  • Posts: 10342
  • Ты должен быть сильным, иначе зачем тебе быть.
Reply #1 on: December 20, 2019, 18:47
в С++
в С

Так есть ли тут какая-то предпочтительность?
int, иначе как вернуть код возврата. Ну или через exit(), тогда пофиг.

Offline злой

  • Posts: 13358
  • Gender: Male
Reply #2 on: December 20, 2019, 18:54
По кашруту положено int main(int argc, char *argv[])
Остался у меня на память от тебя портрет твой портрет работы Пабло Пикассо

Offline From_Odessa

  • Blogger
  • *
  • Posts: 50818
  • Gender: Male
  • Кожаный проказник-алигатор
Reply #3 on: December 20, 2019, 19:07
в С
Вы меня поправили? Если да, то в С++ тоже. Это точно.

int, иначе как вернуть код возврата. Ну или через exit(), тогда пофиг.
Вот программа:

Quote
#iclude <iostream.h>
void main ()
{
float a, b, c, x1, x2, D;
cout<<'Введите a, b и с'<<'/n';
cin>>a>>b>>c;
D=b*b-4*a*c;
x1=-b+sqrt(D)/2*а;
x2=-b-sqrt(D)/2*а;
cout<<'х1='x1<<'/n';
cout<<'х2='x2<<'/n';
}

Извиняюсь, если где-то ошибся в синтаксисе. Такая программа будет прекрасно работать при объявлении пустой главной функции.
Шансы есть всегда. Даже, когда их нет (с) М. Фоменко
Многие думают, что футбол - это вопрос жизни и смерти. Ерунда. Футбол куда важнее (с) Б. Шенкли
Программирование - ещё один вид искусства (с) From_Odessa
Ничто не делает ужин таким вкусным, как отсутствие обеда (с) М. Жванецкий

Offline wandrien

  • Posts: 10342
  • Ты должен быть сильным, иначе зачем тебе быть.
Reply #4 on: December 20, 2019, 19:19
ЯННП.

Offline From_Odessa

  • Blogger
  • *
  • Posts: 50818
  • Gender: Male
  • Кожаный проказник-алигатор
Reply #5 on: December 20, 2019, 19:28
ЯННП.
Видимо, мое невежество в этом вопросе зашкаливает :green:

А что именно Вы не поняли?
Шансы есть всегда. Даже, когда их нет (с) М. Фоменко
Многие думают, что футбол - это вопрос жизни и смерти. Ерунда. Футбол куда важнее (с) Б. Шенкли
Программирование - ещё один вид искусства (с) From_Odessa
Ничто не делает ужин таким вкусным, как отсутствие обеда (с) М. Жванецкий

Offline wandrien

  • Posts: 10342
  • Ты должен быть сильным, иначе зачем тебе быть.
Reply #6 on: December 20, 2019, 19:29
ЯННП.
Видимо, мое невежество в этом вопросе зашкаливает :green:

А что именно Вы не поняли?
Какое отношение это имеет к коду возврата.

Offline злой

  • Posts: 13358
  • Gender: Male
Reply #7 on: December 20, 2019, 20:36
main - первая функция, которая выполняется в программе (на самом деле, там ещё препроцессор отрабатывает, и ещё что-то, но можно считать, что main - первая функция, "точка входа" в программу). Если другие функции возвращают значение в функции, которые их вызывают, и принимают аргументы от них же, то функция main принимает аргументы от операционной системы, и туда же возвращает значение. В принципе, функция main может обычно отработать и так, без входных аргументов и возвращаемого значения.
Остался у меня на память от тебя портрет твой портрет работы Пабло Пикассо

Reply #8 on: December 20, 2019, 21:05
Про препроцессор я, конечно, глупость сморозил, он на этапе компиляции отрабатывает, а не во время выполнения.
Остался у меня на память от тебя портрет твой портрет работы Пабло Пикассо

Offline Python

  • Posts: 46349
  • Gender: Male
  • Aluarium agent
Reply #9 on: December 20, 2019, 22:05
Результат, возвращаемый функцией main (если она int), доступен операционной системе как «код ошибки» или «код завершения». Напр., если программа запускается из окна командной строки или .bat-файла, то этот результат можно обработать вне программы при помощи системной переменной errorlevel (если речь о DOS или Windows; на юникс-подобных системах все по-другому, но общий принцип тот же).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Offline Bhudh

  • Posts: 60555
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #10 on: December 21, 2019, 00:29
А char main () {} можно? :???
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Python

  • Posts: 46349
  • Gender: Male
  • Aluarium agent
Reply #11 on: December 21, 2019, 00:47
А char main () {} можно? :???
У меня скомпилилось и запустилось — по крайней мере, на Си технически можно.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Offline Bhudh

  • Posts: 60555
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #12 on: December 21, 2019, 00:51
Так надо вернуть какой-нибудь хар и поглядеть, что в батнике выведется.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Upliner

  • Posts: 4139
  • Gender: Male
  • Blanklanugbesto
    • Лингвополитика
Reply #13 on: December 21, 2019, 01:04
Так надо вернуть какой-нибудь хар и поглядеть, что в батнике выведется.
Так char это же просто уменьшенный int
Мы, видите ли, винтили вентили аж квинтиллион раз!
LiPo agent

Offline Python

  • Posts: 46349
  • Gender: Male
  • Aluarium agent
Reply #14 on: December 21, 2019, 01:06
Code: [Select]
@(echo /*
@type "%~f0")|gcc -xc  - -o "%~dpn0.exe"
@"%~dpn0.exe" %*
@echo Returned: %errorlevel%
@goto :eof
:mode=c: */
#include<stdio.h>
char main ()
{
puts("Hello, char!");
return 'A';
}
Результат работы:
Code: [Select]
d:\development\num>C:\Users\py\Desktop\try\charmain.bat
Hello, char!
Returned: 65
Вернуло код символа, как и следовало ожидать.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Offline Bhudh

  • Posts: 60555
  • Gender: Male
  • aka 蝎
    • Сайты по языкознанию
Reply #15 on: December 21, 2019, 01:15
Чорд, и правда, в сях же нормального стринга нет.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Offline Python

  • Posts: 46349
  • Gender: Male
  • Aluarium agent
Reply #16 on: December 21, 2019, 01:22
Вот python, когда в exit() передать строку, печатает ее и выходит. errorlevel при этом становится 1.
Code: [Select]
21.12.2019  0:19:26,13
d:\development\num>py -3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit(0)

21.12.2019  0:19:49,87
d:\development\num>echo %errorlevel%
0

21.12.2019  0:19:52,95
d:\development\num>py -3
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:38:48) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> exit('A')
A

21.12.2019  0:20:19,40
d:\development\num>echo %errorlevel%
1
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Offline From_Odessa

  • Blogger
  • *
  • Posts: 50818
  • Gender: Male
  • Кожаный проказник-алигатор
Reply #17 on: December 21, 2019, 01:37
Чорд, и правда, в сях же нормального стринга нет.
Да, почему там решили отказаться от строкового типа данных?
Шансы есть всегда. Даже, когда их нет (с) М. Фоменко
Многие думают, что футбол - это вопрос жизни и смерти. Ерунда. Футбол куда важнее (с) Б. Шенкли
Программирование - ещё один вид искусства (с) From_Odessa
Ничто не делает ужин таким вкусным, как отсутствие обеда (с) М. Жванецкий

Offline Python

  • Posts: 46349
  • Gender: Male
  • Aluarium agent
Reply #18 on: December 21, 2019, 01:44
Для того времени, сишные null-terminated — вполне себе строки. В классическом паскале  строки были в еще более зачаточном состоянии (турбопаскалевский string появился намного позже).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Offline From_Odessa

  • Blogger
  • *
  • Posts: 50818
  • Gender: Male
  • Кожаный проказник-алигатор
Reply #19 on: September 19, 2020, 16:48
Статья по поводу того, что объявлять главную функцию пустой ("void") - это плохо: Ересь в виде void main(), использование функции main

Вопрос разбирающимся форумчанам: как прокомментируете?
Шансы есть всегда. Даже, когда их нет (с) М. Фоменко
Многие думают, что футбол - это вопрос жизни и смерти. Ерунда. Футбол куда важнее (с) Б. Шенкли
Программирование - ещё один вид искусства (с) From_Odessa
Ничто не делает ужин таким вкусным, как отсутствие обеда (с) М. Жванецкий

Reply #20 on: September 19, 2020, 17:16
Вот тут у меня еще диалог был с человеком:

Quote
Сергей, по стандарту функция main должна быть объявлена с типом int. Какой смысл писать void? Будет предупреждение компилятора. На выполнение программы это не влияет.

Quote
меня компилятор никогда не предупреждал, когда я использовал "войд" в "Вижуал С++".
Quote
я сейчас попробовал на GCC, получил ошибку (а не предупреждение, как ожидал). В Visual Studio у меня сейчас нет C++, поэтому не могу проверить.

тут https://rextester.com/l/cpp_online_compiler_gcc три компилятора C++. Только Visual C++ разрешает использовать void. Действительно нет предупреждения.
Шансы есть всегда. Даже, когда их нет (с) М. Фоменко
Многие думают, что футбол - это вопрос жизни и смерти. Ерунда. Футбол куда важнее (с) Б. Шенкли
Программирование - ещё один вид искусства (с) From_Odessa
Ничто не делает ужин таким вкусным, как отсутствие обеда (с) М. Жванецкий

Offline Karakurt

  • Posts: 21918
  • Gender: Male
Reply #21 on: September 19, 2020, 17:28
Зачем сейчас Си, если есть питон и го? Кто-нибудь знает го?
͡° ͜つ ͡°

Offline From_Odessa

  • Blogger
  • *
  • Posts: 50818
  • Gender: Male
  • Кожаный проказник-алигатор
Reply #22 on: September 19, 2020, 17:28
Кто-нибудь знает го?
Я знаю только такую игру :)
Шансы есть всегда. Даже, когда их нет (с) М. Фоменко
Многие думают, что футбол - это вопрос жизни и смерти. Ерунда. Футбол куда важнее (с) Б. Шенкли
Программирование - ещё один вид искусства (с) From_Odessa
Ничто не делает ужин таким вкусным, как отсутствие обеда (с) М. Жванецкий

Offline Rachtyrgin

  • Posts: 1125
  • Gender: Male
Reply #23 on: September 19, 2020, 18:53
Зачем сейчас Си, если есть питон и го? Кто-нибудь знает го?

Я люблю питон. Го щупал - не зашел. Си бессмертен. Пока что никто не придумал ничего лучшего для написания операционок. Пытаются поднять хайп вокруг "D", но он явно сыроват.
Всякому остановленному фашисту для захвата его в плен можешь еще крикнуть:
«Хэндэ хох!» (Руки вверх!)
«Вафи хинлеги!» (Бросай оружие!)
«Абгезэсен!» (Слезай! — С машины, с лошади, с повозки.)
Если фашист не сразу исполняет твое приказание, крикни грознее и добавь:
«Бай флухтфэрзух вирт гэшози!» (Побежишь — буду стрелять!)
А. Афанасьев. В помощь партизану. Москва, 1942 г.

Offline Karakurt

  • Posts: 21918
  • Gender: Male
Reply #24 on: September 19, 2020, 19:37
Почему не зашел го?
͡° ͜つ ͡°

 

With Quick-Reply you can write a post when viewing a topic without loading a new page. You can still use bulletin board code and smileys as you would in a normal post.

Note: this post will not display until it's been approved by a moderator.
Name: Email:
Verification:
√49 Напишите ответ строчными буквами:
«Сто одёжек, все без застёжек» — что это?: