#include<iostream.h>
#include<conio.h>
#include<process.h>
void function(void);
int main(void)
{
clrscr();
int ch;
while(1)
{
cin>>ch;
if(ch==2)
exit(0);
else
function();
}//while
return 0;
}//main
void function(void)
{
cout<<"Hello";
return;
}
Приведенный выше код работает нормально, но почему я получаю предупреждение «Недоступный код»? Я действительно не понимаю, что я делаю не так. Компилятор не показывает предупреждение, когда я комментирую / удаляю return 0;
заявление в main()
, Почему это так? Пожалуйста, скажите мне, что я делаю неправильно, и как правильно это сделать.
while (1)
Цикл не имеет возможности выйти.
Тем самым exit(0)
не распознается, так как анализ потока данных не рассматривает его как возможность перейти к коду позади while (1)
(и на самом деле это не так).
Следовательно, нет возможности добраться до return 0;
,
Если вы замените exit(0)
по break
чем это меняется. break
заставит покинуть while (1)
и return 0;
становится достижимым
почему я получаю предупреждение о «недоступном коде»? Я действительно не понимаю, что я делаю не так.
Цикл не имеет условия возврата: while(1)
и тело цикла не содержит break
(или же goto
) который выпрыгнул бы из цикла Тем не менее, у вас есть return 0;
заявление после цикла. Поскольку выполнение никогда не выпадает из цикла, оно никогда не сможет достичь оператора return.
Компилятор предупреждает вас, что строка не влияет на поведение программы, так как выполнение никогда не может достичь ее. Вы можете избавиться от предупреждения, изменив логику своей программы таким образом, чтобы потенциально выскочить из цикла. Я предлагаю следующее:
if(ch==2)
break;
else
function();
Компилятор не показывает предупреждение, когда я комментирую / удаляю return 0; утверждение в main (). Почему это так?
Это утверждение было «недостижимым кодом», о котором говорилось в предупреждении. Если нет недоступного кода, нет необходимости предупреждать об этом.
Это безопасно удалить линию. main
отличается тем, что неявно возвращает 0 в отсутствие оператора возврата (если выполнение когда-либо возвращается из main
что ваша программа никогда не делает).