#c
#c
Вопрос:
У меня есть следующая программа (это она полностью, за исключением комментариев):
#include <iostream>
#include <vector>
void sieve(uint32_t n) {
for(uint32_t i = 0; i < n; i ) {
for(uint32_t j = i * i; j < n; j = i) {
}
}
}
int main(int argv, char * argc[]) {
sieve(10);
return 0;
}
Он компилируется просто отлично. Когда я запускаю ее, она просто зависает навсегда. Даже если я введу std::cout << "Test"
в качестве первой строки main
, она никогда не печатается.
Я упускаю что-то очевидное здесь?
Комментарии:
1. Как результат вашего теста показал, что он зависает навсегда ? 😉
2. Я использовал доказательство путем преувеличения
Ответ №1:
for(uint32_t j = i * i; j < n; j = i) {
Первый переход i
равен 0 и поэтому j
фактически не изменяется ( j = 0
) ==> бесконечный цикл
Комментарии:
1. Опередил меня … он заморозил мой компьютер, когда я его запустил… Извлеченные уроки