e1s6
#include<stdio.h>#include<math.h>
int main()
{
long int result;
int i;
int re;
result = 2;
if (i=1;i<64;i++);
{
result = result * 2;
re = re + result;
}
re = result / 25000;
printf("舍罕王需要付给达依尔%ukg麦子",re);
return 0;
}
请问为什么这个运行不了?我已经试了好多遍了,一直找不清错误到底在哪。。。 本帖最后由 jackz007 于 2019-8-19 01:11 编辑
最要命的问题是:
if (i=1;i<64;i++) ;
应该把语句末尾的分号去掉
我把程序改了一下,你可以试试看。
#include <stdio.h>
int main()
{
unsigned __int64 b , re , result ;
int i , k ;
for(result = 0 , i = 0 ; i < 64 ; i ++) {
for(b = 1 , k = 0 ; k < i ; k ++) b *= 2 ;
result += b ;
}
re = result / 25000 ;
printf("舍罕王需要付给达依尔:%I64u kg 麦子\n" , re) ;
}
本代码循环的作用就是计算 result = 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ 63 = 2 ^ 64 - 1 = 0xFFFFFFFFFFFFFFFF = 18446744073709551615,也就是 64 位无符号长整型数的最大极限值。 本帖最后由 白牡丹秀色可餐 于 2019-8-19 14:45 编辑
谢谢
页:
[1]