| 
 | 
 
 
发表于 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公斤麦子!
 
  复制代码 
 
 |   
 
 
 
 |