• ベストアンサー

c言語のforの計算で悩んでいます。

c言語のforの計算で悩んでいます。 これの答えがなぜ2000まで表示されるのでしょうか。 if文が意味がないというか、 if(0<a<1000)なので、999まで表示されるのかと思ったのですが。 もっとも後で、aを設定せず if(0<i*2<1000)とやればいいのではないかと気付きましたが。 既出でしたらすみません。

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

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

その条件式が間違っているからです。 if(0 < a && a < 1000) としなければ、どう動くかはコンパイラ次第。

matsurikag
質問者

お礼

ただの勉強不足でした。ありがとうございます

その他の回答 (1)

  • aurumnet
  • ベストアンサー率43% (51/117)
回答No.2

if(0<a<1000) これで動くかどうかは1さんのおっしゃってるとおりコンパイラ次第となります 動いたとしても 0<a<1000では 0<aが計算され答えが真か偽(1か0)に置き換わるためa<1000ではなく 真か偽(1か0)<1000の計算となり、常に真の値を出すとおもわれます よってif文の中の処理が行われ2000まで表示されます if文を書き換えるとしたら if((0<a) && (a<1000)) となるとおもいます

matsurikag
質問者

お礼

ご丁寧な説明ありがとうございます。 cの書き方に慣れていないのでもっと勉強します

関連するQ&A