Здравствуйте, King Oleg, Вы писали:
KO>Здравствуйте, fAX, Вы писали:
fAX>>Задание несложное: написать самую короткую программу, которая бы завершалась аварийно KO>Она должна компилироваться?
Безусловно!
...Complex problems have simple, easy-to-understand wrong answers...
(Grossman's Misquote of H.L.Mencken)
Здравствуйте, Draqon, Вы писали:
D>Здравствуйте, fAX, Вы писали:
fAX>>Задание несложное: написать самую короткую программу, которая бы завершалась аварийно
D>
D>int main()
D>{
D> int i = 1/0;
D>}
D>
Ужас! Целых 30 символов!!!
...Complex problems have simple, easy-to-understand wrong answers...
(Grossman's Misquote of H.L.Mencken)
Здравствуйте, fAX, Вы писали:
fAX>Здравствуйте, Draqon, Вы писали:
D>>Здравствуйте, fAX, Вы писали:
fAX>>>Задание несложное: написать самую короткую программу, которая бы завершалась аварийно
D>>
Здравствуйте, Neo09, Вы писали:
N>Здравствуйте, fAX, Вы писали:
fAX>>Здравствуйте, Draqon, Вы писали:
D>>>Здравствуйте, fAX, Вы писали:
fAX>>>>Задание несложное: написать самую короткую программу, которая бы завершалась аварийно
D>>>
Здравствуйте, korzhik, Вы писали:
K>Здравствуйте, korzhik, Вы писали:
fAX>>>Задание несложное: написать самую короткую программу, которая бы завершалась аварийно
K>>
K>>main(){main();}
K>>
K>>15 символов
K>ну наверно это нелегально с точки зрения стандарта C, K>ну пусть так: K>
K>int main(){main();}
K>
K>19 символов
Тогда return нужен
А вот если void вместо int то наверное короче уже некуда
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Кодт, Вы писали:
>>Это по-любому нелегально: функцию main нельзя вызывать рекурсивно. Где-то в Стандарте на этот счёт сказано.
А>если не изменяет память, в C, в отличие от C++ как раз можно вызывать функцию main рекурсивно. А>Люди, у кого есть C99 посмотрите пожалуйста.
Здравствуйте, BlackHeretic, Вы писали:
BH>Здравствуйте, korzhik, Вы писали: K>>ну наверно это нелегально с точки зрения стандарта C, K>>ну пусть так: K>>
K>>int main(){main();}
K>>
K>>19 символов BH>Тогда return нужен BH>А вот если void вместо int то наверное короче уже некуда
void вроде нельзя по стандарту
Comeau в режиме C99 вариант с void не скомпилил,
а вот вариант с int и без return скомилил даже без варнингов.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, korzhik, Вы писали:
K>>>
K>>>main(){main();}
K>>>
K>>>15 символов
K>>ну наверно это нелегально с точки зрения стандарта C,
К>Это по-любому нелегально: функцию main нельзя вызывать рекурсивно. Где-то в Стандарте на этот счёт сказано.
К>Более подходяще было бы К>
main(){abort();}
main(){main();} — скомпилировалось в VC7.1 и вызвало stack overflow
Здравствуйте, Аноним, Вы писали:
А>если не изменяет память, в C, в отличие от C++ как раз можно вызывать функцию main рекурсивно. А>Люди, у кого есть C99 посмотрите пожалуйста.
скачал я себе C99, так что вот:
C99 6.5.2.2#11:
Recursive function calls shall be permitted, both directly
and indirectly through any chain of other functions.
Никаких исключений для функции main здесь не делается.
Хотя в C++ рекурсивный вызов функции main ведёт (насколько я помню) к undefined behavior, в C99 это well defined.
Как я понял return обязателен, так что окончательный вариант полностью соответствующий стандарту C99 такой: