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

The*_*Cat 3 c

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

int square_root = sqrt(sum);
Run Code Online (Sandbox Code Playgroud)

我需要明确地投这个吗?

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

sqrt(4200) = 64
sqrt(42) = 6
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 6

 int square_root = sqrt(sum);
Run Code Online (Sandbox Code Playgroud)

相当于C:

int square_root = (int) sqrt(sum);
Run Code Online (Sandbox Code Playgroud)

现在要知道,如果a的整数部分在行为中double不可表示,int则未定义(在两种情况下).

  • @TheUnfunCat例如`int a =(double)INT_MAX + 1.0;`是未定义的行为. (2认同)

Arm*_*yan 5

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