2015-05-16 3 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 Я бы сказал, что 'if (x)' эквивалентно 'if (x! = False)' – Christophe

ответ

2

Там нет необходимости для сравнения, потому что, если сравнить некоторые булево b с true, результатом является значение b.

Тест if (isPrime(i)) говорит: «Если i является простым».
Вы могли бы, конечно, переписать его как более сложный if (isPrime(i) == true) - «если это правда, что i является простым» - но зачем сложно?

Аналогично, if(isDivisible(num,i)) означает «если num делится на i», и в то время как «если это правда, что num делится на i» означает то же самое, это просто не нужно.

И наконец, в isDivisible, значение сравнения number % divisor == 0 либо true или false.
Функция возвращает результат этого сравнения.

Смежные вопросы