Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

int main () и void main ()

Автор From_Odessa, декабря 20, 2019, 17:45

0 Пользователи и 2 гостей просматривают эту тему.

From_Odessa

Не знаю, как в других языках, а в С++ главную функцию можно объявить возвращающей целочисленное значение или пустое значение. И в целом на программу это обычно не влияет. Так есть ли тут какая-то предпочтительность? И если да, то почему?

wandrien

Цитата: From_Odessa от декабря 20, 2019, 17:45
в С++
в С

Цитата: From_Odessa от декабря 20, 2019, 17:45
Так есть ли тут какая-то предпочтительность?
int, иначе как вернуть код возврата. Ну или через exit(), тогда пофиг.

злой

Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

From_Odessa

Цитата: wandrien от декабря 20, 2019, 17:47
в С
Вы меня поправили? Если да, то в С++ тоже. Это точно.

Цитата: wandrien от декабря 20, 2019, 17:47
int, иначе как вернуть код возврата. Ну или через exit(), тогда пофиг.
Вот программа:

Цитировать#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';
}

Извиняюсь, если где-то ошибся в синтаксисе. Такая программа будет прекрасно работать при объявлении пустой главной функции.

wandrien


From_Odessa

Цитата: wandrien от декабря 20, 2019, 18:19
ЯННП.
Видимо, мое невежество в этом вопросе зашкаливает :green:

А что именно Вы не поняли?

wandrien

Цитата: From_Odessa от декабря 20, 2019, 18:28
Цитата: wandrien от декабря 20, 2019, 18:19
ЯННП.
Видимо, мое невежество в этом вопросе зашкаливает :green:

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

злой

main - первая функция, которая выполняется в программе (на самом деле, там ещё препроцессор отрабатывает, и ещё что-то, но можно считать, что main - первая функция, "точка входа" в программу). Если другие функции возвращают значение в функции, которые их вызывают, и принимают аргументы от них же, то функция main принимает аргументы от операционной системы, и туда же возвращает значение. В принципе, функция main может обычно отработать и так, без входных аргументов и возвращаемого значения.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

злой

Про препроцессор я, конечно, глупость сморозил, он на этапе компиляции отрабатывает, а не во время выполнения.
Entre los individuos, como entre las naciones, el respeto al derecho ajeno es la paz.   - Benito Juárez

Python

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

Bhudh

Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Цитата: Bhudh от декабря 20, 2019, 23:29
А char main () {} можно? :???
У меня скомпилилось и запустилось — по крайней мере, на Си технически можно.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Bhudh

Так надо вернуть какой-нибудь хар и поглядеть, что в батнике выведется.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Upliner

Цитата: Bhudh от декабря 20, 2019, 23:51
Так надо вернуть какой-нибудь хар и поглядеть, что в батнике выведется.
Так char это же просто уменьшенный int
Sancta Maria, Mater Dei, ora pro nobis peccatoribus, nunc et in hora mortis nostrae.

Python

@(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';
}

Результат работы:

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

Bhudh

Чорд, и правда, в сях же нормального стринга нет.
Пиши, что думаешь, но думай, что пишешь.
MONEŌ ERGŌ MANEŌ.
Waheeba dokin ʔebi naha.
«каждый пост в интернете имеет коэффициент бреда» © Невский чукчо

Python

Вот python, когда в exit() передать строку, печатает ее и выходит. errorlevel при этом становится 1.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

From_Odessa

Цитата: Bhudh от декабря 21, 2019, 00:15
Чорд, и правда, в сях же нормального стринга нет.
Да, почему там решили отказаться от строкового типа данных?

Python

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

From_Odessa

Статья по поводу того, что объявлять главную функцию пустой ("void") - это плохо: Ересь в виде void main(), использование функции main

Вопрос разбирающимся форумчанам: как прокомментируете?

From_Odessa

Вот тут у меня еще диалог был с человеком:

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

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

тут https://rextester.com/l/cpp_online_compiler_gcc три компилятора C++. Только Visual C++ разрешает использовать void. Действительно нет предупреждения.

Karakurt

Зачем сейчас Си, если есть питон и го? Кто-нибудь знает го?

From_Odessa


Rachtyrgin

Цитата: Karakurt от сентября 19, 2020, 17:28
Зачем сейчас Си, если есть питон и го? Кто-нибудь знает го?

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


Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр