|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <math.h>
int main()
{
unsigned long long int sum = 0;
unsigned int long long weight;
unsigned int long long temp;
int i;
for (i=0; i < 64; i++);
{
temp = pow(2,i);
sum = sum + temp;
}
weight = sum / 25000;
printf("舍罕王应该给予达依尔%11u粒麦子!\n",sum);
printf("如果每25000粒麦子为1kg,那么应该给%11u公斤麦子!\n",weight);
return 0;
}
哪里错了呢?
本帖最后由 jackz007 于 2021-3-18 10:55 编辑
- #include <stdio.h>
- #include <math.h>
- int main(void)
- {
- unsigned long long i , sum , weight ;
- for(sum = i = 0 ; i < 64 ; i ++) sum += (long long) pow(2 , i) ; // pow 前面加上 (long long) 前缀非常关键
- weight = sum / 25000 ;
- printf("舍罕王应该给予达依尔 %llu 粒麦子!\n" , sum) ; // "llu" 是 "LLU" 的小写
- printf("如果每25000粒麦子为1kg,那么应该给 %llu 公斤!\n" , weight) ;
- }
复制代码
编译、运行实况
- D:\0002.Exercise\C>g++ -o x x.c
- D:\0002.Exercise\C>x
- 舍罕王应该给予达依尔 18446744073709551615 粒麦子!
- 如果每25000粒麦子为1kg,那么应该给 737869762948382 公斤!
- D:\0002.Exercise\C>
复制代码
不用 pow() 函数的版本
- #include <stdio.h>
- int main(void)
- {
- unsigned long long i , sum , weight ;
- for(sum = i = 0 ; i < 64 ; i ++) sum += 1LL << i ;
- weight = sum / 25000 ;
- printf("舍罕王应该给予达依尔 %I64u 粒麦子!\n" , sum) ;
- printf("如果每25000粒麦子为1kg,那么应该给 %I64u 公斤!\n" , weight) ;
- }
复制代码
|
-
|