岑寂风翰 发表于 2022-9-26 18:01:13

S1E6代码对照了没有错误输出结果不同

#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("舍罕王应该给予达依尔%11u粒麦子\n",sum);
        printf("如果每25000粒麦子为1Kg,那么应该给%11u公斤麦子 !\n",weight);
       
        return 0;
       
       
}

Twilight6 发表于 2022-9-26 19:32:40


最后几行 printf 字符串占位符使用错啦,是 %llu 不是 %11u,一个是英文小写的 l ,一个是数字的 1,参考代码:

#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;
}

岑寂风翰 发表于 2022-9-26 20:59:39

Twilight6 发表于 2022-9-26 19:32
最后几行 printf 字符串占位符使用错啦,是 %llu 不是 %11u,一个是英文小写的 l ,一个是数字的 1,参考 ...

可以了
想问一下%llu的作用
还有sum=0的必要性

Twilight6 发表于 2022-9-26 21:05:06

岑寂风翰 发表于 2022-9-26 20:59
可以了
想问一下%llu的作用
还有sum=0的必要性


%llu 是 64 位无符号整形占位符

sum 因为后面要使用到 sum = sum + temp ,使用之前必须初始化,所以需要先给他初始化一个值

可能回答的不是很标准,只学了 C 语言的前几课课时,后来学 Java 去了
页: [1]
查看完整版本: S1E6代码对照了没有错误输出结果不同