【发布时间】:2011-10-22 21:28:41
【问题描述】:
#include <stdio.h>
int main(int argc, char *argv[]) {
/**
* Prints out powers of 2 for 32 iterations.
*/
int iterations = 0;
int value = 1;
while (iterations <= 32) {
// Prints in this format: iterations 2^n value
printf("%d\t2^%d\t%d", iterations, iterations, value);
switch (iterations) {
case 8:
case 16:
case 32:
printf("\t\t%d bit\n", iterations);
break;
default:
printf("\n");
break;
}
value *= 2;
++iterations;
}
return 0;
}
当我编译和运行这段代码时,当我打印大于 2^30 的“值”时,会发生奇怪的事情,即使我将它声明为无符号长。
我该怎么办?我只是一个初学者。 :-(
【问题讨论】:
-
实际上,这运行了 33 次迭代
-
可能是因为我使用了++迭代?
-
hmm.... 0-32 = 33。你初始化为 0 并循环直到它
标签: c++ c debugging integer overflow