dポイントプレゼントキャンペーン実施中!

C++を初めて1週間の者です

// ボールの移動量
static int bx=6;

// 設定した移動量分、xに加算し、動かす
x += bx;

// 跳ね返り計算部分
if ( x < 0 ){
x = 0;
bx = -bx; // 値を反転

}else if ( x > WIDTH ){
x = WIDTH;
bx = -bx;
}

○弾の跳ね返りを学んでいます
上記コードはうまいこと跳ね返りは成功しています
跳ね返り部分のbx = -bxですが
これはbxをマイナスの符号にしてつっこんでいると理解しています
それでは2度目の跳ね返りのさい、
bxは-6を持っていて、さらにマイナスのbxをつっこむと
bxはなぜプラスの符号に変わるのですか?

A 回答 (4件)

> 跳ね返り部分のbx = -bxですが


> これはbxをマイナスの符号にしてつっこんでいると理解しています

いいえ、(コメントにもあるとおり)「符号を反転して代入」しているのです。
    • good
    • 0

-(-6)になるから+6になる


別の書き方すれば  bx *= -1; と同じ
    • good
    • 1

>跳ね返り部分のbx = -bxですが


>これはbxをマイナスの符号にしてつっこんでいると理解しています

正確には、-1を掛けているので、「符号の反転」だと思いますよ。
    • good
    • 0

数学の問題のような気もしますが……。



>bx = -bx;

bx = 0 - bx;
と同義な扱いなんではないですかね?
# bx = bx * -1; とか bx *= -1; とかの書き方もありますかねぇ。

んで……bxが正数の場合は
bx = 0 - (6);
って事で負数に、負数だった場合は
bx = 0 - (-6);
で正数になる。ということかと。
    • good
    • 0

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