回答編集履歴
1
認識違いの回答を訂正
answer
CHANGED
|
@@ -23,4 +23,26 @@
|
|
|
23
23
|
|
|
24
24
|
は`while`句の外側に位置しており、`while`句の中で`i++`が実行されないため、正解は
|
|
25
25
|
「無限ループになり、何も表示されない」
|
|
26
|
-
となります。
|
|
26
|
+
となります。
|
|
27
|
+
|
|
28
|
+
---------以下、追記
|
|
29
|
+
|
|
30
|
+
失礼しました。
|
|
31
|
+
> これは6行目がwhile(1 <= 1);となるからでしょうか
|
|
32
|
+
|
|
33
|
+
とおっしゃっているので、無限ループになることは認識されていたのですね。
|
|
34
|
+
|
|
35
|
+
> なぜ、コンパイルエラーではなく、無限ループが答えになるのでしょうか
|
|
36
|
+
|
|
37
|
+
おそらく、【全ての】到達不可能コードをコンパイラに検出させることが難しいからではないでしょうか?
|
|
38
|
+
stackoverflowでも同様の話題があり、多分、そのような回答がなされていますw
|
|
39
|
+
|
|
40
|
+
[http://stackoverflow.com/questions/3795585/why-does-java-have-an-unreachable-statement-compiler-error](http://stackoverflow.com/questions/3795585/why-does-java-have-an-unreachable-statement-compiler-error)
|
|
41
|
+
|
|
42
|
+
ちなみに、以下のように`return`句や`throw`句のあとに実行行を書いた場合は、コンパイルエラーとなります。
|
|
43
|
+
```java
|
|
44
|
+
return;
|
|
45
|
+
System.out.println("hoge");
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
これは、コンパイラから見ても到達不可能であることが明らかだからだと思われます。
|