http://ideone.com/hANuZКак предотвратить переполнение целых чисел при использовании C или C++?
#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 итераций –
может быть, потому что я использовал ++ итерации? – Sweetgirl17
hmm .... 0-32 = 33. Вы инициализируетесь до 0 и выполняете цикл до тех пор, пока не будет = = 32, поэтому он пройдет в цикле 33 раза –