« 変数の範囲 | トップページ | コメントは、過去の自分からの贈り物? »

2005年7月11日 (月)

暗黙のキャスト

この前は、
「演算を行う場合には、演算中の
最も範囲が大きい変数に
合わせてから演算する。」

と書いたのだが…

この適用範囲が振るっている!

    A    = 1   / 2 * 0.5
    A    = 1.0 / 2 * 0.5

両方とも計算結果は、0.25だ。
間違い無い!

間違ってたらゴメンナサイ…。<弱気…。

#include    <stdio.h>
void main( void )
{
    double    A;

    A    = 1 / 2 * 0.5;
    printf( "結果:%f\n", A );

    A    = 1.0 / 2 * 0.5;
    printf( "結果:%f\n", A );
}

結果:0.000000
結果:0.250000

となる…。

不思議不思議…。

どおやら初めのは、
(double)0.00 = (double)( (int)1 / (int)2 ) * (double)0.5

次のは、
(double)0.25 = (double)( (double)1.0 / (double)2 ) * (double)0.5

らしい…。

この辺は、慣れ…?

結局みんな「double」で計算すればOK?

安直が最大の対策かも…。

謎は深まるばかり…。

|

« 変数の範囲 | トップページ | コメントは、過去の自分からの贈り物? »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 暗黙のキャスト:

« 変数の範囲 | トップページ | コメントは、過去の自分からの贈り物? »