アプリ版:「スタンプのみでお礼する」機能のリリースについて

フレームを利用して、if文で下限を作りたいです。
aが20として
if(a<=20&&--a>0)として、20から毎フレーム毎に-1されて0を下限にしたいのですが、
0を突破してマイナスの値になってしまいます。
何がいけないのでしょうか?

A 回答 (5件)

> if(--a>0){ }ではaは負にはならないのでしょうか?



無条件で-1してるので、いずれ負になる決まってるじゃないですか。
    • good
    • 1

これだけではなんともいえない。



ループを行っているfor()なりwhile()なりの停止条件がわからない。
if()の条件次第でこのループから脱出するようになっていればよいが、そうなっていなければaの値にかかわらずループが続くだけです。

ループを行っているブロック全体のコードを見せていただければより適切なアドバイスができると思います。
    • good
    • 0

これ以外がどうなっていて、


そのプログラムがどういう理屈で「20から毎フレーム毎に-1されて0を下限」になるように動作するのでしょうか?
説明してください。

思った通りに動かない時は、
・「理屈」が間違えている
・「理屈」を正しくプログラミング言語で記述できていない
のどちらかです。
この1行だけ抜き出されても、判断できません。
    • good
    • 3

> if(--a>0)ならば、


aを-1してから0と比較するので、a=a-1;if(a>0)と同じ意味ですよ。
負にしたくないなら、if(a>0) {--a; ~~ } としてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
if(--a>0){ }ではaは負にはならないのでしょうか?

お礼日時:2019/09/26 23:43

0と比較する前に-1するからです。


a>0の時だけ-1してください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
だとしたら、
if(--a>0)ならば、
毎フレーム毎にaから-1していき、aが0より大きいならば、また-1して0より小さくなるまで繰り返し-1すると考えています。
正しいでしょうか?

お礼日時:2019/09/26 21:59

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