代码问题
#include <stdio.h>#include <math.h>
int main ()
{
_int64 sum = 0,weight;
int i;
for (i = 0;i<64;i++)
{
sum =sum +pow(2,i);
}
weight = sum / 25000;
printf("麦子的总数=%llu\n王得给他%llu公斤麦子",sum,weight);
getchar();
getchar();
return 0;
}
请问为什么输出都是零呢
不是很知道,但是printf("麦子的总数=%llu\n王得给他%llu公斤麦子",sum,weight);你定义的_int64,不是应该用%lld嘛? 永恒的蓝色梦想 发表于 2020-4-12 19:47
不是很知道,但是你定义的_int64,不是应该用%lld嘛?
欸,我没发现,对哈,谢谢啦
本帖最后由 永恒的蓝色梦想 于 2020-4-12 21:12 编辑
我知道了,long装不下,得用unsigned long
给你我的代码:#include<stdio.h>
int main(){
unsigned long sum=0,ing=1;
for(int i=64;i;i--){
sum+=ing;
ing<<=1;//相当于 ing*=2;
}
printf("麦子的总数=%llu\n王得给他%llu公斤麦子",sum,sum/25000);
return 0;
}满意请选为最佳哦~ 因为溢出了,这个运算正确结果应该是2^64-1
_int64 的取值范围是-2^63~2^63-1
应该用unsigned long long 它的取值范围是0~2^64-1
程序中还用到除法,最好是用float或者double类型
页:
[1]