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 的不可分割部分在 adouble中不可表示,int则行为是未定义的(在这两种情况下)。

于 2012-11-17T14:37:51.807 回答
5

在功能上没有区别,但是显式转换会引起读者的注意,即存在截断。

于 2012-11-17T14:38:33.393 回答
2

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

于 2012-11-17T14:39:51.643 回答