为什么这里要用用unsigned整数
#include <stdio.h>#include <math.h>
int main()
{
<font color="DarkOrange">long long int Sum, Weight;
long double sum, i, CurrentBlock; </font>
for(i=1;i<=64;i++)
{
CurrentBlock = pow(i,i+1);
sum = sum + CurrentBlock;
}
Sum = (int)sum;
Weight = Sum/25000;
<font color="DarkOrange">printf("共要%d粒麦子赏赐他的宰相\n", Sum);
printf("如果每25000粒麦子重1kg,那么舍罕王应该给予达依尔%d公斤麦子\n", Weight);</font>
}
/*麦子棋盘问题*/
请问为什么这里必须用unsigned的值?
共要-2147483648粒麦子赏赐他的宰相
如果每25000粒麦子重1kg,那么舍罕王应该给予达依尔-85899公斤麦子
unsigned 才够装,2^64-1 signed 的少一半。你循环到 64 signed 的就溢出了 claws0n 发表于 2018-10-26 19:18
unsigned 才够装,2^64-1 signed 的少一半。你循环到 64 signed 的就溢出了
谢谢啦
页:
[1]