2015-05-16 54 views
-2

对不起,但我只需要从函数返回布尔调用的解释,我对自己不得不问这个问题感到非常失望。它是一个非常简单的程序,但如果真的和即时猜测,返回没有。我已经把这些问题放在了程序中,有人可以解释一下发生了什么。提前致谢。C++我需要一个解释

int main() 
{ 
    for (int i = 0; i < 100; i++) 
    { 
     //check if prime, if it is print it 

     if (isPrime(i)) //does this say - if returns true, print? 
     { 
      cout << i << endl; 
     } 

    } 

    return 0; 
} 

bool isPrime(int num) 
{ 
    for (int i = 2; i < num; i++) 
    { 
     if (isDivisible(num, i)) { // not sure about this? 
      return false; 
     } 
    } 
    return true; 
} 

bool isDivisible(int number, int divisor) 
{ 
    return number % divisor == 0; // is this saying return true (if) num % div == 0 ? 
} 
+3

对这两个问题的回答是肯定的。 –

+0

'if(x)'相当于'if(x == true)'。较短的版本通常被认为是更好的风格。 –

+0

@AlanStokes我倾向于说'如果(x)'等于'if(x!= false)' – Christophe

回答

2

没有必要进行比较,因为如果你比较一些布尔btrue,其结果是b值。

测试if (isPrime(i))说“如果i是素数”。
你当然可以将它改写为更复杂的if (isPrime(i) == true) - “如果i是真的” - 但为什么会使事情复杂化?

同样,if(isDivisible(num,i))的意思是“如果numi整除”,虽然“如果这是真的,numi整除”指的是同样的事情,它只是不必要的。

最后,在isDivisible中,比较number % divisor == 0的值是truefalse
该函数返回该比较的结果。