2016-08-09 2 views
0

Получил практические вопросы, и у меня есть следующий код:Почему этот недостижимый код?

while (false) { x=3; } 

The х = 3 является недостижимым код, и я не понимаю, почему. Существует аналогичный раздел кода:

if (false) { x=3; } 

который совершенно применим.

Может быть, что-то вроде вопроса о нобе, или может быть, я просто что-то пропустил, но если бы вы могли помочь мне понять, почему это было бы здорово, спасибо!

Я спрашиваю конкретно о разнице между оператором if и while, потому что одна и та же строка кода была изменена на if, является действительной и будет компилироваться.

+0

код недостижим означает, что компилятор счел, что не может быть никакого пути к постановке 'х = 3;' потому что 'в то время как (ложь)' никогда не может быть 'true' – SomeDude

+0

Кикер является: ни немогу, если (ложь) '. Реальный вопрос: почему компилятор не имеет проблем с оператором if. – Gimby

+1

И для второй части вопроса обратитесь к http://stackoverflow.com/a/8570302/1743880 – Tunaki

ответ

-1

Читайте ниже статье будет ответить на ваш вопрос: http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.21

в то время как оператор может завершаться нормально тогда и только тогда, по крайней мере один из верно следующее:

о это время утверждения достижимы и условие выражение не является постоянным выражением (§15.28) со значением true.

o Существует заявление о разрешении на доступ, которое завершает вывод .

Сводная инструкция доступна, если оператор while равен , а выражение условия не является постоянным выражением , значение которого ложно.