Чем отличается int main от void main

Чем отличается int main от void main

Привет мир программирования.

В настоящее время я делаю свой первый курс программирования в университете, и наш инструктор сказал, что функция

Я, возможно, неправильно его услышал / неверно истолковал, потому что, когда я пытаюсь запустить консоль с этим, это выдает ошибку. Но, когда я делаю int main () <>; все работает нормально.
Так:
1. Нужны ли фигурные скобки независимо от содержания в теле?

Как работает функция без возврата 0.

Используя это, какая кратчайшая возможная функция int main / void main возможна?

по запросу, вот ошибка:

Решение

В C ++ есть два правильных определения для main :

или эквивалент. (Возможны другие формы, определенные реализацией, но мы можем их игнорировать. И тип возвращаемого значения всегда int по крайней мере для размещенных реализаций; void main() неправильно.)

Брекеты < а также >являются частью синтаксиса определения функции; они не являются обязательными.

Вы можете предоставить декларация за main , такие как

но в этом нет никакого смысла. Это декларация, а не определение — и вам все равно нужно где-то иметь определение.

return 0; в конце не требуется. Это особый случай, который применяется только к main , не для других функций: если выполнение достигает закрытия > неявный return 0; ,

Самая короткая юридическая программа, вероятно, будет:

Другие решения

В этом разница между определением функции и объявлением (см. В чем разница между определением и декларацией?

В основном int main (); является прототипом, сообщающим компилятору, что у вас будет функция с именем main, которая возвращает int, но вы еще не реализовали ее.

int main () <> — это реализация функции, то есть фигурные скобки, придающие ей тело функции и полную реализацию.

Читайте также:  Ткань для протирки оптики

Я хотел бы уточнить несколько вещей.

это функция декларация, то есть он позволяет другим функциям / классам знать об этом.
Тем не менее, это не определять main в смысле это ничего не говорит о чем main на самом деле
Поскольку каждая программа на C ++ должна определять main , поскольку он запускается первым, ваш компилятор обязательно выдаст ошибку компиляции.

Вы определяющий main указав, что main ничего не делает, поэтому будет работать

Наконец, компиляторы C ++ неявно добавят return 0; заявление, если вы ничего не возвращаете, так как это показатель для операционной системы, что программа успешно запущена.

Для получения дополнительной информации см. https://stackoverflow.com/a/204483/2512775 На что main должен вернуться.

Ваш код ошибки означает, что вы неправильно объявили функцию main (). Что вам нужно сделать, это добавить фигурные скобки, чтобы обозначить блок кода, в котором будет работать ваше приложение.

Хотя компилятор добавит оператор return, если он не задан, просто добавьте его, чтобы убедиться.

Одни начинают функции с int , другие с void . Чем вот этот вариант . :

. отличается от этого ? :

Слышала (из курса от Специалиста), что void используют при программировании драйверов.

3 ответа 3

Первая функция, обязательно требует чтобы из нее был произведен возврат данных типа int, любой иной тип или вообще игнорирования возврата значение, вызовет ошибку.

Вторая функция, не требует чтобы вы что-то возвращали, возврат при этом допустим, но это предположительно — плохой тон. Что те , что иные функции, используются одинаково в программировании драйверов. С типами на столь низком уровне работают серьёзно.

Т. е. точка выхода.
Можно ее пропустить, конечно, тогда компилятор автоматически добавит return 0; в конец программы.
Это значение передается вызывающему процессу (например, операционной системе) чтобы он "понял", что программа завершена корректно.

Читайте также:  Супремум и инфинум функции примеры

Второй вариант:
void main()

по завершении программы ничего не возвращает, что может привести к различным проблемам.
Это можно обойти с помощью функции exit( );

Ссылка на основную публикацию
Adblock detector