* 1.0在此代码中做了什么?

时间:2013-09-05 00:58:33

标签: c++ visual-studio-2010 primes

以下是检查数字是否为素数的代码:

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”是什么意思?

3 个答案:

答案 0 :(得分:6)

乘以1.0num强制转换为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))

通常,您不需要演员,因为从intdouble存在隐式演员。请参阅here