由于`uint32_t` for-loop,C++程序挂起

Cis*_*tin 3 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;
}
Run Code Online (Sandbox Code Playgroud)

它编译得很好.当我运行它时,它会永远挂起.即使我把它std::cout << "Test"作为第一行main,它也从不打印.

我错过了一些明显的东西吗?

Joh*_*136 9

for(uint32_t j = i * i; j < n; j += i) {

第一次通过i是0,所以j实际上并没有改变(j += 0)==>无限循环