【初心者】Java の宿題ここで答えます 5.0【歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0772768
05/03/14 15:39:48何を言いたいのか、よくわからない。
多分わたしの疑問の書き方がまずかったのだろうと思うので、改めて書いてみる。
ループ内の、Math.sqrt(double) の呼び出しが、もしコンパイラによって
一回だけの呼び出し(2回目以降は一回目の呼び出しの際の戻り値を使う)に、
置き換えられるとしたら、
あとから Math クラス内の sqrt(double)の実装が変更された場合に、
再コンパイルが必要になってしまわないか?
sqrt(double) 内部で、値を返すための動作以外の動作(副作用)が
行われていた場合、それが一度しか実行されないことにならないか?
(例えば、呼ばれた回数をカウントするような実装。)
今回は、Math クラスのスタティックメソッド sqrt が題材になっているが、
コンパイラから見れば、単なる「或るクラスの或るスタティックメソッド」なので、
人間から見れば、「副作用が起るようなことはやってないに違いない」と、
あたりまえに思えることも、コンパイラにとってはそうではないのではないか?
■ このスレッドは過去ログ倉庫に格納されています