以下是检查数字是否为素数的代码:
bool IsPrime(int num)
{
if(num<=1)
return false;
if(num==2)
return true;
if(num%2==0)
return false;
int sRoot = sqrt(num*1.0);
for(int i=3; i<=sRoot; i+=2)
{
if(num%i==0)
return false;
}
return true;
}
表达式“num * 1.0”是什么意思?
答案 0 :(得分:6)
乘以1.0
将num
强制转换为double
。您可以使用显式强制转换来执行相同操作。
答案 1 :(得分:3)
它正在执行num x 1.0,因此如果num为5则为5 x 1.0 sqrt()方法以double为参数,需要5.0
答案 2 :(得分:3)
在num*1.0
中,num
首先提升为double
,结果为double
,然后传递给double sqrt(double)
。否则,您可能需要使用sqrt(static_cast<double>(num))
。
通常,您不需要演员,因为从int
到double
存在隐式演员。请参阅here。