1 / 1 / 0
Регистрация: 30.06.2017
Сообщений: 7
1

Прошу объяснить, почему перед функцией main, которая ничего не возращает, мы должны писать int, а не void?

10.08.2017, 22:37. Показов 6241. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как пример:

}
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
*
... main()
{
  float fahr, celsius;
* int lower, upper, step;
* * 
* * lower = 0;
* * upper = 300;
* * step = 20;
* * 
* * fahr = lower;
* * printf("Таблица соотношений градусов по Фаренгейту к Цельсию\n");
* * while (fahr <= upper) {
* * * * celsius = (5.0/9.0) * (fahr - 32.0);
* * * * printf("%3.0f %6.1f\n", fahr, celsius);
* * * * fahr = fahr + step;
     return;
* * }
}
Как я понимаю, тот тип, который мы указываем перед названием функции относится к тем данным, которые она возвращает, но в этой программе main ничего не возвращает, следовательно на месте ... должен быть тип void. Объясните, пожалуйста, в чем я не прав!
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2017, 22:37
Ответы с готовыми решениями:

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

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

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

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

3
1550 / 875 / 179
Регистрация: 05.12.2015
Сообщений: 2,555
10.08.2017, 23:22 2
Цитата Сообщение от АРА6 Посмотреть сообщение
Как я понимаю, тот тип, который мы указываем перед названием функции относится к тем данным, которые она возвращает, но в этой программе main ничего не возвращает, следовательно на месте ... должен быть тип void. Объясните, пожалуйста, в чем я не прав!
Почему не возвращает?
Скомпилите такой код:
C
1
2
3
4
int main()
{
    return 42;
}
Для винды:
Откройте консоль (cmd.exe). Запустите там скомпилированную программу. Введите "echo %ERRORLEVEL%". Убедитесь, что таки возвращает.
0
698 / 140 / 57
Регистрация: 20.08.2017
Сообщений: 255
20.08.2017, 15:16 3
Если тип функции main совместим с типом int (long, long long, short и т.д.), то возврат значения из main эквивалентен вызову exit(возвращаемое_значение). Т.е:

C
1
2
3
4
int main() {
    ...
    return 0; // эквивалентно exit(0)
}
Вызов функции exit означает нормальное завершение работы программы.

Все вышесказанное верно только для C, не для C++!

По стандарту C11, если выполнение функции main достигло закрывающей скобки, то из функции автоматически возвращается 0:

C
1
2
3
4
int main() {
    ...
    // если выполнение дошло то этого места, автоматически вызывается exit(0)
}
Если тип main не совместим с int (тот же void), то возвращаемое значение зависит от среды.

Получается, что main всегда что-то возвращает, независимо от того, какой у нее тип и присутствует ли оператор return.
1
41 / 41 / 15
Регистрация: 29.12.2016
Сообщений: 291
20.08.2017, 22:55 4
Цитата Сообщение от АРА6 Посмотреть сообщение
include <stdio.h>
*
... main()
{
* float fahr, celsius;
* int lower, upper, step;
* *
* * lower = 0;
* * upper = 300;
* * step = 20;
* *
* * fahr = lower;
* * printf("Таблица соотношений градусов по Фаренгейту к Цельсию\n");
* * while (fahr <= upper) {
* * * * celsius = (5.0/9.0) * (fahr - 32.0);
* * * * printf("%3.0f %6.1f\n", fahr, celsius);
* * * * fahr = fahr + step;
* * *return;
* * }
}
Знакомая программка, я ее когда-то усовершенствовал.
0
20.08.2017, 22:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2017, 22:55
Помогаю со студенческими работами здесь

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

Чем отличается int main от void main?
Мне нравится int main можно её всегда использовать а про void main забыть?

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru