第六节课后动手题
非常奇怪,我觉得我打的跟答案一样,但就是显示结果不一样 溢出了,C 的 math 要到 C11 吧才支持,一般只支持到 double。试试这个
temp = (unsigned long long)pow(2,i); // 强制转换,确保类型一致
下面 printf() 请确保是小写 L,看起来像 1 。 我也感觉你的%llu看起来像1,不知道是不是字体的问题,我用vim小写L是有点弯弯的尾巴 本帖最后由 关键是感觉 于 2018-8-17 12:29 编辑
#include<stdio.h>
int main(){
long long b=2;
long long c=1;
int i;
for(i=1;i<64;i++){
printf("%d %llu\n",i,b<<i-1);
c+=b<<i-1;
}
printf("%llu %llu\n",c,(unsigned long long)c/25000);
}
感觉这样看起来好理解一点。
64个格子
第一个格子 1粒
第二个格子 2粒
第三个格子 4粒
第N个格子M粒
其实就是 2^0 2^1 2^2 2^3 2^N次方
不需要pow()函数,为什么不使用pow函数?查看pow原型:extern float pow(float x, float y); ,带入所有的参数都需要转换成float
使用位移就能搞定
2D 10B
4D 100B
8D 1000B
16D 10000B
32D 100000B
左移规律。
@小甲鱼,论坛有BUG。。就像楼主这样的上来就放一张图的帖子,打开后一直有提示下载图,看不到标题了啊。。 非常感谢大家的帮忙
页:
[1]