3

簡単な質問。私のコードでは、次のようにdoubleを整数に設定しました。

int square_root = sqrt(sum);

これを明示的にキャストする必要がありますか?

キャストせずに、私は私が望む結果を得るようです、すなわちfloor(sqrt(x))

sqrt(4200) = 64
sqrt(42) = 6
4

3 に答える 3

6
 int square_root = sqrt(sum);

Cでは次と同等です。

int square_root = (int) sqrt(sum);

ここで、aの積分部分がでdouble表現できない場合int、動作は未定義であることに注意してください(どちらの場合も)。

于 2012-11-17T14:37:51.807 に答える
5

機能的には違いはありませんが、明示的なキャストにより、切り捨てが行われているという事実に読者の注意を引くことができます。

于 2012-11-17T14:38:33.393 に答える
2

数値の平方根が整数の場合、影響はありません。しかし、それが実数 (たとえば 10 の平方根) の場合、プログラムにとって不便な切り捨てられた整数が得られます。

于 2012-11-17T14:39:51.643 に答える