我有以下程序(这是完整的,除了评论):
#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
中的第一行,也从不打印。
我错过了一些明显的东西吗?
答案 0 :(得分:9)
for(uint32_t j = i * i; j < n; j += i) {
第一次通过i
为0,因此j
实际上没有变更(j += 0
)==&gt;无限循环