Windows7 64bit
C:\borland\bcc55\Bin>bcc32
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Syntax is: BCC32 [ options ] file * = default; -x- = turn switch x off
を使っています。
以下のコードで
1行で計算すると正しくなくて、2行に分けると正しい結果が得られる
のですが、その理由を教えて頂きたいです。
よろしくお願いします。
1行で計算すると正しくなくて、2行に分けると正しい結果が得られる
Re: 1行で計算すると正しくなくて、2行に分けると正しい結果が得られる
右辺の計算の途中で、int型で表わせる数値の範囲を超えているように思います。
こっちは、1行目で__int64型の変数に値を代入「した後で」続きの計算をしていますね。このように、__int64とintが混在しているとき、
2行目の右辺の型は最も大きい__int64型となるので、何も問題がない、ということでありましょう。
1行で片づけるには、たぶん のようにキャストすればいいような気がします。実験はしていませんが。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: 1行で計算すると正しくなくて、2行に分けると正しい結果が得られる
box さん、回答して頂いてありがとうございました。
右辺の方に関する説明も理解できました。
> result = (__int64) 284480 * F / L;
> のようにキャストすればいいような気がします。実験はしていませんが。
に付いて、こちらの環境では、確かに1行で正しい結果が得られました。
ありがとうございました。
右辺の方に関する説明も理解できました。
> result = (__int64) 284480 * F / L;
> のようにキャストすればいいような気がします。実験はしていませんが。
に付いて、こちらの環境では、確かに1行で正しい結果が得られました。
ありがとうございました。