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

时间:2016-10-10 01:45:06

标签: 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 个答案:

答案 0 :(得分:9)

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

第一次通过i为0,因此j实际上没有变更(j += 0)==&gt;无限循环