Здравствуйте!Занимаюсь по курсам на intuit.ru Возникли вопросы уже на после первого занятия. (со второго раза сдал на 83%)
Итак. Там был вопрос, который поставил меня в тупик. Привожу по памяти:
"Дана программа:
main(){
printf("Hello, world!\n");
}
Что произойдёт при компиляции:
1) программа успешко скомпилируется и запустится
2) программа не скомпилируется из-за синтаксической ошибки
3) программа успешно скомпилируется но код возврата будет не определён
4) программа не скомпилируется, потому что у main() отсутствует аргумент (или возвращаемое значение? точно не помню :))
"
Так вот. Вроде вопрос-то простой. Но вот что я заметил:
[c0der@semushin ~]$ cat test1.c
main(){}
[c0der@semushin ~]$ cat test2.c
main(){printf("hello\n");}
[c0der@semushin ~]$ cat test3.c
main(){printf("hello world!\n");}
[c0der@semushin ~]$ gcc test1.c -o test1
[c0der@semushin ~]$ gcc test2.c -o test2
[c0der@semushin ~]$ gcc test3.c -o test3
[c0der@semushin ~]$ ./test1
[c16der@semushin ~]$ ./test2
hello
[c6der@semushin ~]$ ./test3
hello world!
Т.е. в трёх разных случаях код возврата разный. Т.е. получается, что он и правда без return будет не определён ? Он от чего-нибудь зависит ? Почему не возвращается ноль по умолчанию?
Спасибо заранее за разъяснения.