• ベストアンサー

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

質問者が選んだベストアンサー

  • ベストアンサー
noname#158634
noname#158634
回答No.2

書いてある内容を理解していないということでよろしいですね? 最初に出力されるのが「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)

回答No.3

(回答No.1の補足) > ++演算子を前にして(++num)とすると、期待の処理になるかもしれません。 とは、下記のことです:   public class Asterisk {     public static void main(String args[]){       int num = 0;       while(++num < 3) {         System.out.println(num);        }     }   }

回答No.1

++演算子が後ろになっているので、最後のインクリメント(2から3になるとき)において、while条件での評価時点ではnum++はまだ2であるなるためと思われます。 ++演算子を前にして(++num)とすると、期待の処理になるかもしれません。 ご参考URL: http://www.site-cooler.com/java/j2se/03_01.htm ※以上のご回答はご参考情報ですので、間違っていたらすみません。

関連するQ&A