Подтвердить что ты не робот

Может ли функция main() возвращать двойную?

Может ли функция main() в программе C возвращать тип данных double?

Если Да, как и почему?

Если Нет, почему?

4b9b3361

Ответ 1

Да. Согласно стандарту C, main() должен вернуть значение int. Но не должен.

См. здесь.

Ответ 2

Из C99

5.1.2.2.3 Окончание программы Если тип возврата основной функции является тип, совместимый с int, возврат от первоначального вызова до основного функция эквивалентна вызову exit с возвращенным значением по своей основной функции аргумент; 10) достижение}, завершает основную функцию, возвращает значение 0. Если тип возврата не является совместим с int, завершение статус, возвращенный хосту среда не определена

Ссылка здесь - 5.1.2.2.3 Окончание программы http://www.open-std.org/JTC1/SC22/WG14/www/docs/n1256.pdf

Ответ 3

C говорит, что это прекрасно. POSIX, с другой стороны, хочет целое число от 0 до 255. Как правило, main() должно возвращать значение EXIT_SUCCESS или EXIT_FAILURE, если специально не устанавливать статус, который не является, но все еще между 0 - 255, чтобы сделать статус значимым.

Например, возврат 114 может сообщить вызывающему init script о некотором условии, которое может быть исправлено с помощью script.

Если в ОС POSIX вы пытаетесь вернуть 3.14 из main(), вызывающий процесс почти всегда будет видеть 255.

Я не уверен в других операционных системах, но в целом - то, что C позволит вам уйти, не всегда согласуется с тем, что сама ОС позволит вам уйти:) Это совсем не POSIX.

Ответ 4

Я не знаю, что бы это означало, если main вернулся дважды. В любом случае, вот что происходит с gcc:

double main ()
{
    return 0.0;
}
$ cc double.c
double.c: In function 'main':
double.c:2: warning: return type of 'main' is not 'int'
$ ./a.out
$ echo $?
255
$

Ответ 5

Функция named main, которая выступает в качестве точки входа программы в размещенной реализации C, должна возвращать int. Можно написать функцию с именем "main", которая возвращает double. Чтобы сделать это, вы делаете его статичным, а затем покупаете себе пуленепробиваемый жилет и, возможно, нанимаете некоторых вооруженных охранников; если кто-то должен поддерживать такое чудовище, вам понадобятся.

Ответ 6

Если вы находитесь в размещенной среде (то есть, как правило, на ПК), тип возвращаемого значения фиксируется, как уже было сказано. Вы можете вернуть другой тип значения, если он работает в автономной среде. Обычно автономная среда обычно используется при программировании для микроконтроллеров, поскольку вокруг нет операционной системы (вы создаете один большой двоичный файл, который запускается непосредственно на аппаратном обеспечении). Однако в этом случае обычным прототипом для main будет void main(void).

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