- ベストアンサー
while文の動作に関して
以下のwhile文の動作結果に関して質問なのですが、 実行結果に「3」が表示される理由が理解できておりません。 numが「3」のときは「false」に該当するような気がするのですが。 ご教示頂ければ幸いです。 public class Asterisk { public static void main(String args[]){ int num = 0; while(num++ < 3) { System.out.println(num); } } } 実行結果 1 2 3
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
書いてある内容を理解していないということでよろしいですね? 最初に出力されるのが「1」な時点で気づいてほしいですけど。 while(num++ < 3) ここで、(num < 3)が判定された「後で」インクリメントが行われます。 後置インクリメントとはそういうものです。 要するに 0 < 3 //=> true 0++ //=> 1 System.out.println(1) 1 < 3 //=> true 1++ //=> 2 System.out.println(2) 2 < 3 //=> true 2++ //=> 3 System.out.println(3) という3回ループです。OK?
その他の回答 (2)
- takkun3728
- ベストアンサー率70% (14/20)
(回答No.1の補足) > ++演算子を前にして(++num)とすると、期待の処理になるかもしれません。 とは、下記のことです: public class Asterisk { public static void main(String args[]){ int num = 0; while(++num < 3) { System.out.println(num); } } }
- takkun3728
- ベストアンサー率70% (14/20)
++演算子が後ろになっているので、最後のインクリメント(2から3になるとき)において、while条件での評価時点ではnum++はまだ2であるなるためと思われます。 ++演算子を前にして(++num)とすると、期待の処理になるかもしれません。 ご参考URL: http://www.site-cooler.com/java/j2se/03_01.htm ※以上のご回答はご参考情報ですので、間違っていたらすみません。