#include <stdio.h>
int main() {
unsigned long int sum = 0LL;
long i;
for (i = 0LL; i < 100000000; i ) {
sum = sum i;
}
printf("%i", sum);
}
that's all of my code, and I am curious why it prints 887459712 instead of 4999999950000000, and how to fix this
CodePudding user response:
Your sum is declared unsigned long int, which is big enough for your expected result.
The problem is not overflow.
The problem is your printf statement is wrong.
You told it to print a "normal" sized int with %i, which only goes up to about 4.2 billion.
You should tell printf to print an unsigned long int, using %llu
It should be:
printf("%llu", sum);
Results
Success #stdin #stdout 0s 5376KB
4999999950000000
