Программа на C зависает из-за цикла `uint32_t` для

#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. Опередил меня … он заморозил мой компьютер, когда я его запустил… Извлеченные уроки