2015-11-21 4 views
1

У меня есть этот код, который намеревается объяснить, как работают «для циклов».Объяснение «int factorial = 1» в этом цикле для цикла

#include <iostream> 
using namespace std; 
int main() { 
    int n; 
    cout << "Input a positive integer: "; 
    cin >> n; 
    int factorial = 1; 
    for (int i = 1; i <= n; ++i) 
     factorial *= i; 
    cout << "factorial(" << n << ") is << factorial << "\n "; 
    return (0); 
} 

Что делает линия int factorial =1? Зачем это нужно?

+0

Форматирование кода помогает – sehe

ответ

4
int factorial = 1; 

определяет переменную с идентификатором factorial и типа int. Предполагается сохранить временные результаты факториального расчета на всех итерациях for -loop и провести окончательный результат.

Он явно инициализированы 1 потому

  1. Он должен быть инициализирован как-то; В противном случае неопределенное поведение будет результатом того, что будет доступно доступ к неинициализированной ячейке памяти.

  2. 0 было бы плохо, потому что 0 * x = 0 для всех действительных чисел в то время как 1 * x = x для всех действительных чисел.

+0

Почему мы должны инициализировать их? не инициализируется ли она в следующей строке, где int = 1? –

+0

@ Aljabra Нет, инициализируется только 'i'. 'factorial * = i;' эквивалентно 'factorial = factorial * i;'. Как вы видите, 'factorial' используется для определения результата, поэтому ** ** должен быть инициализирован. – Downvoter

+0

Итак, в основном все в инструкции в цикле for необходимо инициализировать отдельно? –

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