没有强制转换将double设置为int是否安全?

时间:2012-11-17 14:36:23

标签: c

简单的问题。在我的代码中,我将double设置为整数,如下所示:

int square_root = sqrt(sum);

我是否需要明确投射?

没有施法,我似乎得到了我想要的结果,即floor(sqrt(x))

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

3 个答案:

答案 0 :(得分:6)

 int square_root = sqrt(sum);

在C中等效于:

int square_root = (int) sqrt(sum);

现在请注意,如果double中的int的整数部分无法在{{1}}中表示,则行为未定义(在这两种情况下)。

答案 1 :(得分:5)

在功能上没有区别,但是明确的演员会引起读者注意截断的事实。

答案 2 :(得分:2)

如果您的数字的平方根是整数,则不会影响。但如果它是一个实数(例如10的平方根),你将得到一个截断的整数,这可能对你的程序不方便。