プロが教えるわが家の防犯対策術!

aが500として
ループ文の中に
if(a<=500&&--a>0)
if(a<0){ a=0; }
と書いたところ、aは-1となったのですが、
理由がわかりません。
500以下で0より大きいならばaは1になると考え、次のif文では偽であるため、
-1となるはずがないのですが。


if (a< 0) { a= 0; }// ←コレのせい。
により、if(a<=500&&--a>0)で-1となると言われましたのですが、理解できません。

A 回答 (3件)

理解できないなら


「if()の()の中で -- とか ++ とか += とか = とかを使うな」
とアドバイスさせていただきます。


使いこなすとベテランっぽく見えますし、実際にベテランでないと意図しない動作になりがちです。
ですが、使わなくても書ける、むしろ、使わない方が綺麗でわかりやすく書けます。

理屈もわからずに使っても、思った通りに動かないのがプログラムです。
    • good
    • 4

if(a<=500&&--a>0)if(a<0){ a=0; }


は、
if(a<500) { --a; if(a>0 && a<0) {a=0;} }
ということですが、「a>0 && a<0」は常に偽なので、a=0は実行されることなく、ひたすら --a し続けます。
    • good
    • 0

この2つのコードが何処に有って、


ループがどうなっているかわからなければ
答えようがありません。

そもそも「なった」とは「何時」「何処で」なのかも不明。

相変わらず酷いコミュ障ですが
なんとかしましょう。
    • good
    • 3

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!