|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 清如许 于 2022-9-30 20:46 编辑
代码一
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- unsigned long long int a;
- unsigned long long int temp;
- unsigned long long int sum;
- unsigned long long int b;
-
- for (a=0;a<64;a++)
- {
- b=pow(2,a);
- sum=b+temp;
- temp=b;
- }
- printf("%llu\n",sum);
- return 0;
- }
复制代码
代码二
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- unsigned long long sum = 0;
- unsigned long long temp;
- int i;
- for (i=0; i < 64; i++)
- {
- temp = pow(2, i);
- sum = sum + temp;
- }
- printf("%llu\n", sum);
-
- return 0;
- }
复制代码
本帖最后由 jackz007 于 2022-9-30 21:05 编辑
即便 temp 初值是 0,代码一也是严重错误的。
其实,这道题很简单,根本就没有那么多的是非
- #include <stdio.h>
- int main(void)
- {
- unsigned long long int a , b , i , sum ;
- for(sum = a = 0 ; a < 64 ; a ++) {
- for(b = 1 , i = 0 ; i < a ; i ++) b *= 2 ;
- sum += b ;
- }
- printf("%I64u\n",sum) ;
- }
复制代码
编译、运行实况:
- D:\[00.Exerciese.2022]\C>g++ -o x x.c
- D:\[00.Exerciese.2022]\C>x
- 18446744073709551615
- D:\[00.Exerciese.2022]\C>
复制代码
|
|