有关pow函数
#include <stdio.h>#include <math.h>
int main ()
{
long long int sum;
sum = pow(2,63);
printf("舍罕王应该给予达依尔%d粒麦子",sum);
return 0;
}
上面代码打出来的是-1;为什么结果不对呢?用int sum或者long long int就能打出正确的数,请问如何解决?谢谢! #include <stdio.h>
#include <math.h>
int main (void){
long long int sum;
sum = (long long int)pow(2, 63);
printf("%I64d", sum);
return 0;
}
pow()函数返回的是浮点型的数。将其转化为int类型之后得到的数比实际值少1,位数还是不够。 本帖最后由 jackz007 于 2021-9-22 15:51 编辑
算法不对,最后给的麦子数应该是 1 + 2 + 4 + ... + pow(2,63) 粒才对。
#include <stdio.h>
int main(void)
{
unsigned long long i , s ;
for(s = i = 0 ; i < 64 ; i ++) s += 1LL << i ;
printf("%I64u\n" , s) ;
}
答案应该是:18446744073709551615,十六进制形式应该是:0xffffffffffffffff,没错,这个值就是 64 位无符号整型数的最大值。
页:
[1]