|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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 位无符号长整型数的最大极限值。
|
|