数据类型 作业
// long long int//_Bool类型
//是的
// 4个
// int
// BDF
// int
//只会根据所写的代码运行
#include <stdio.h>
#include <math.h>
int main()
{
int result1 = pow(1, 2) + pow(2, 3) + pow(3, 4) + pow(4, 5) + pow(5, 6);
printf("result=%d\n", result1);
long long sum=0;
int v;
long long temp, weight;
for (v = 0; v < 64; v++)
{
int temp = pow(2, v);
sum = sum + temp;
}
weight = sum / 25000;
printf("舍罕王应该给予达依尔%lld粒麦子\n", sum);
printf("如果每25000粒麦子为1kg,那么应该给%lld公斤麦子\n", weight);
return 0;
}
输出
result=16739
舍罕王应该给予达依尔-68719476737粒麦子
如果每25000粒麦子为1kg,那么应该给-2748779公斤麦子
问:为什么不是正确结果
为什么有负号 #include <stdio.h>
#include <math.h>
int main()
{
int result1 = pow(1, 2) + pow(2, 3) + pow(3, 4) + pow(4, 5) + pow(5, 6);
printf("result=%d\n", result1);
unsigned long long sum=0;
int v;
unsigned long long temp, weight;
for (v = 0; v < 64; v++)
{
int temp = pow(2, v);
sum = sum + temp;
}
weight = sum / 25000;
printf("舍罕王应该给予达依尔%lld粒麦子\n", sum);
printf("如果每25000粒麦子为1kg,那么应该给%lld公斤麦子\n", weight);
return 0;
}
输出:
result=16739
舍罕王应该给予达依尔-68719476737粒麦子
如果每25000粒麦子为1kg,那么应该给737869760199602公斤麦子
为什么sum还是负数 越界了 temp
#include <stdio.h>
#include <math.h>
int main()
{
int result1 = pow(1, 2) + pow(2, 3) + pow(3, 4) + pow(4, 5) + pow(5, 6);
printf("result=%d\n", result1);
double sum=0, weight;
int v;
long long temp;
for (v = 0; v < 64; v++)
{
double temp = pow(2, v);
sum = sum + temp;
}
weight = sum / 25000;
printf("舍罕王应该给予达依尔%.1lf粒麦子\n", sum);
printf("如果每25000粒麦子为1kg,那么应该给%.1lf公斤麦子\n", weight);
return 0;
} 改成 unsigned long long
#include <stdio.h>
#include <math.h>
int main()
{
int result1 = pow(1, 2) + pow(2, 3) + pow(3, 4) + pow(4, 5) + pow(5, 6);
printf("result=%d\n", result1);
unsigned long long sum=0;
int v;
unsigned long long temp, weight;
for (v = 0; v < 64; v++)
{
int temp = pow(2, v);
sum = sum + temp;
}
weight = sum / 25000;
printf("舍罕王应该给予达依尔%ull粒麦子\n", sum);
printf("如果每25000粒麦子为1kg,那么应该给%ull公斤麦子\n", weight);
return 0;
}
页:
[1]