おせわになってます。
C++、Visual C++ 2008 Express Edition, windows 7 64 bit
の環境でプログラミングしていたところ
ブレイクポイントを設けることで、以下の二通りの計算で違う結果が出ていることが分かりました。
その1
height = editMessages.size()*15*(mouseCord[1]-gosa)/600;
その2
height = editMessages.size()*15/600*(mouseCord[1]-gosa);
私は、両方とも同じ結果になる。そう思っていました。
mouseCord は
int mouseCord[2];
として宣言。値は、38
gosa は
static int gosa;
として宣言。値は40。
height は
int height;
として宣言。値は、90だった。
editMessages
は
deque<string> editMessages;
として宣言。(std::deque) editMessages.size()の値は、493。unsigned int ですね。
となっておりました。
結果は、
その1の方法では
heightの値が7158254になってしまいました。
493*15*(38-40)/600
これで-24.64とかになると思っていたのですが・・・。
その2の方法では、思ったとおりの
493*15/600*(38-40) = -24.64
つまりheightは -24になりました。
何か、私は勘違いしていますか?
四則演算からなにか勘違いしているのでしょうか。。。。
それとも何か型(static unsigned signed とか)の組み合わせ??
