2017-02-17 3 views
0

Я просто хочу знать, что происходит внутри, когда мы возвращаем значение. Если мы не вернем значение, каковы последствия?Зачем программе возвращать значение?

#include <stdio.h> 
int main() { 
    printf("Hello world"); 
    return 0; //what is use of this? 
} 
+0

Полезно знать, является ли что-то успешным или неудачным, и вы можете сделать это в зависимости от статуса выхода программы. –

+0

Когда кто-то запускает вашу программу, они могут получить код возврата. В linux вы можете сделать это: 'echo $?', Чтобы увидеть, как вернулась программа, с которой вы только что вернулись. – bruceg

+0

Ничего не происходит * внутренне *, потому что, когда вы возвращаетесь из main(), ваша программа завершена. Возвращаемое значение main() полезно * внешне *, когда ваше приложение завершено. –

ответ

1

может быть оценена с помощью системы, чтобы определить, если программа не удалось запустить (и почему это не удалось)

+1

Краткий, но правильный ответ. Не могли бы вы привести примеры частых кодов ошибок? –

+0

https://en.wikipedia.org/wiki/Exit_status – dstorey

-1

Не каждая программа или функция возвращает значение. В c мы используем return 0, чтобы вернуть управление операционной системе, когда программа завершена, а также для обеспечения бесперебойной работы программы. Надеюсь, что помогает. Приветствия

0

Я думаю, что, возможно, у вас есть два вопроса:

Почему главный() возвращают int и не void?

Этот вопрос имеет already been answered in many forms. В основном: для программы, которая называла ее (оболочка, возможно, или вашей среды IDE), чтобы она могла различать успех и различные способы отказа.

Что произойдет, если вы забудете вернуть значение из main()?

В первой стандартизованной версии C (C89) в этом отношении нет ничего особенного в main(). Если вы забыли вернуть значение, поведение было неопределенным. На практике большинство компиляторов будут действовать так, как если бы вы положили return 0;.

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

Как Погода Vane сказал в комментариях, ваша программа не может не вернуть значение (на платформах, где «возвращаемое значение» является осмысленной концепцией). В Linux execve() и аналогичные функции возвращают int, что является возвращаемым значением программы. Если программа была плохой и не собиралась возвращать значение, возвращаемое значение, вероятно, было бы просто произвольным значением (но возможно, что на другой платформе такая программа потерпит крах).

Смежные вопросы