e1s6
#include<stdio.h>#include<math.h>
int main()
{
unsigned __int64 result , re ,j;
double i;
for (re = 0,result = 0,i = 0; i < 64;i++){
result = pow(2, i);
re += result;
}
j = re / 25000;
printf("舍罕王需要付给达依尔%ukg麦子",j);
}
请问这个代码有什么问题?为什么结果跟答案不一样? 本帖最后由 jackz007 于 2019-8-20 10:11 编辑
j 是 64 位长整型数,在 printf() 中,用 '%u' 不能完整显示这个变量的值,试一下 '%I64u' 或 '%llu'
double i;
for (re = 0 , result = 0 , i = 0 ; i < 64 ; i ++) {
. . . . . .
你的循环变量 i 为什么刻意用 double,0 ~ 63 的变化范围,必须用 int 呀!
#include<stdio.h>
#include<math.h>
int main()
{
unsigned __int64 result, re, j;
double i;
for (re = 0, result = 0, i = 0; i < 64; i++) {
result = pow(2, i);
re += result;
}
j = re / 25000;
printf("舍罕王需要付给达依尔%llukg麦子", j);
}
页:
[1]