|
发表于 2021-11-30 11:04:49
|
显示全部楼层
我想两位理解错题主的意思了
我想题主的意思是这样的
下面这两个代码为什么第一个正常,第二个输出的却是 0
这两个代码有区别吗?
一个是 先把 pow 的结果给 temp,然后 sum += temp
另一个是直接 sum += pow 的结果
这俩有区别吗?
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- unsigned long long sum = 0;
- unsigned long long temp;
- unsigned long long weight;
- int i;
- for (i=0; i < 64; i++)
- {
- temp = pow(2, i);
- sum = sum + temp;
- }
- weight = sum / 25000;
- printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
- printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);
- return 0;
- }
复制代码- ./main
- 舍罕王应该给予达依尔18446744073709551615粒麦子!
- 如果每25000粒麦子为1kg,那么应该给737869762948382公斤麦子!
复制代码
- #include <stdio.h>
- #include <math.h>
- int main()
- {
- unsigned long long sum = 0;
- unsigned long long weight;
- int i;
- for (i=0; i < 64; i++)
- {
- sum += pow(2, i);
- }
- weight = sum / 25000;
- printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
- printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);
- return 0;
- }
复制代码- $ ./main
- 舍罕王应该给予达依尔0粒麦子!
- 如果每25000粒麦子为1kg,那么应该给0公斤麦子!
复制代码
|
|