回答編集履歴
1
認識違いの回答を訂正
test
CHANGED
@@ -49,3 +49,47 @@
|
|
49
49
|
「無限ループになり、何も表示されない」
|
50
50
|
|
51
51
|
となります。
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
---------以下、追記
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
失礼しました。
|
60
|
+
|
61
|
+
> これは6行目がwhile(1 <= 1);となるからでしょうか
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
+
とおっしゃっているので、無限ループになることは認識されていたのですね。
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
> なぜ、コンパイルエラーではなく、無限ループが答えになるのでしょうか
|
70
|
+
|
71
|
+
|
72
|
+
|
73
|
+
おそらく、【全ての】到達不可能コードをコンパイラに検出させることが難しいからではないでしょうか?
|
74
|
+
|
75
|
+
stackoverflowでも同様の話題があり、多分、そのような回答がなされていますw
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
[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)
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
ちなみに、以下のように`return`句や`throw`句のあとに実行行を書いた場合は、コンパイルエラーとなります。
|
84
|
+
|
85
|
+
```java
|
86
|
+
|
87
|
+
return;
|
88
|
+
|
89
|
+
System.out.println("hoge");
|
90
|
+
|
91
|
+
```
|
92
|
+
|
93
|
+
|
94
|
+
|
95
|
+
これは、コンパイラから見ても到達不可能であることが明らかだからだと思われます。
|