- ★★Java質問・相談スレッド171★★
604 :デフォルトの名無しさん[sage]:2014/12/01(月) 19:25:23.27 ID:wlgWogTe - System.out.print(3);
System.out.print('\n'); System.out.print(4 + '\n'); 上記のコードを書いて実行したところ出力が 3 14 となりましたが、1はどこから来たのでしょうか?
|
- ★★Java質問・相談スレッド171★★
606 :デフォルトの名無しさん[sage]:2014/12/01(月) 20:24:26.77 ID:wlgWogTe - なるほど改行コードの0x000Aがintの10として扱われていたんですね
ありがとうございました
|
- ★★Java質問・相談スレッド171★★
609 :デフォルトの名無しさん[sage]:2014/12/01(月) 21:14:25.14 ID:wlgWogTe - たびたびすみません
上記の System.out.print(4 + '\n'); のコードで実際に4 + 10 が行われている瞬間、もしくは行われる際の 詳細な処理の流れを見る方法はありませんでしょうか? System.out.print(4 + '\n'); の行にブレークポイントを設定して実行し ステップインするとすでにprint()の引数のarg0に14が入っています。 見たいのは最初のブレークからステップインする間の処理なのですが…
|
- ★★Java質問・相談スレッド171★★
611 :デフォルトの名無しさん[sage]:2014/12/01(月) 22:04:34.47 ID:wlgWogTe - >>610
レスありがとうございます 足し算は実行されないとはどういうことでしょうか? 4 と ¥n (0x0A) がどこかしらで足されているのは確かだと思うのですが…
|
- ★★Java質問・相談スレッド171★★
617 :デフォルトの名無しさん[sage]:2014/12/01(月) 22:17:03.23 ID:wlgWogTe - >>612
System.out.print(4 + '\n'); の出力が 14 になるまでの流れを知りたいと思っています >>613 ありがとうございます 自分なりに調べてコンパイルした.classファイルをjadで逆コンパイルしたところ 生成されたコードが System.out.print(14); だったことから、 >>610さんや>>613さんのおっしゃっている意味はわかりました コンパイル時の計算というのは何らかの方法で可視化できないのでしょうか?
|
- ★★Java質問・相談スレッド171★★
621 :デフォルトの名無しさん[sage]:2014/12/01(月) 22:47:22.11 ID:wlgWogTe - >>614-616
ありがとうございます なぜ14という数字になったのかという点はおかげさまでわかりました 教えて頂いた情報から System.out.print(4 + '\n'); がコンパイルされたバイトコード上では すでに 14 になっていて、デバッガはJVMで実行される バイトコードの流れを表示するものだから、求めていた 4 と 0X0A が 足される際の流れが表示されないということは理解できました。 >>618 ありがとうございます そうなのですね。 皆さんありがとうございました。 おぼろげながらようやく理解できました。 コンパイラの仕組みについて勉強してきます。
|
- ★★Java質問・相談スレッド171★★
622 :デフォルトの名無しさん[sage]:2014/12/01(月) 22:52:22.63 ID:wlgWogTe - >>620
教えて頂いたように書けば変数の中身を表示できました ありがとうございました。
|