鱼C论坛

 找回密码
 立即注册
查看: 1085|回复: 19

[已解决]请教关于c语言第六课的一个问题

[复制链接]
发表于 2021-5-8 18:43:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.         unsigned long long sum ;  //本来在这里赋初值
  6.         unsigned long long temp;
  7.         unsigned long long weight;
  8.                 sum = 0;                   //但现在在这里赋初值,为什么会错误
  9.         int i;

  10.         for (i=0; i < 64; i++)
  11.         {
  12.                 temp = pow(2, i);
  13.                 sum = sum + temp;
  14.         }

  15.         weight = sum / 25000;

  16.         printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
  17.         printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);
  18.                 getchar();
  19.         return 0;
  20. }
复制代码


以上程序在“unsigned long long sum”定义变量的同时赋初值即“unsigned long long sum=0”,并且去掉sum=0那一行就成功执行。但如果像上面那样编译就报错,这是为什么呢,我用的是studio 2010,难道是编译器问题吗
最佳答案
2021-5-8 20:43:52

对,是这个
把35行和36行调换一下位置看看
  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.         unsigned long long sum ;  //本来在这里赋初值
  6.         unsigned long long temp;
  7.         unsigned long long weight;
  8.         int i;
  9.         sum = 0;                   //但现在在这里赋初值,为什么会错误

  10.         for (i=0; i < 64; i++)
  11.         {
  12.                 temp = pow(2, i);
  13.                 sum = sum + temp;
  14.         }

  15.         weight = sum / 25000;

  16.         printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
  17.         printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);
  18.                 getchar();
  19.         return 0;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-8 18:45:33 | 显示全部楼层
sum没声明类型吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 18:48:36 | 显示全部楼层

声明啦,unsigned long long sum不是声明吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 19:14:13 | 显示全部楼层

回帖奖励 +1 鱼币

我复制了你的代码但是没有报错,如果你用的是gcc的话是不是没在编译的时候加-lm
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 19:16:52 | 显示全部楼层
没有看到是vs2010,你可以看下这个对你有没有帮助http://blog.sina.com.cn/s/blog_d796a5b70102vd7q.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 19:51:35 | 显示全部楼层
我猜你用的是 vc6 ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 20:02:15 | 显示全部楼层
王逗比666 发表于 2021-5-8 19:16
没有看到是vs2010,你可以看下这个对你有没有帮助http://blog.sina.com.cn/s/blog_d796a5b70102vd7q.html

看了,也强制转换了,但有出现新的问题,估计是编译器问题,我还一个试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 20:02:53 | 显示全部楼层
人造人 发表于 2021-5-8 19:51
我猜你用的是 vc6 ?

是vs2010,有关系吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 20:05:58 | 显示全部楼层
pregnant 发表于 2021-5-8 20:02
是vs2010,有关系吗

截图看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 20:27:45 | 显示全部楼层

虽然它说是类型错误,可能丢失数据,但就算强制转换,它又会说"i"未定义,总之就是各种错误。但只要把sum=0;那一行删去就编译成功了
11.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 20:32:18 | 显示全部楼层
pregnant 发表于 2021-5-8 20:27
虽然它说是类型错误,可能丢失数据,但就算强制转换,它又会说"i"未定义,总之就是各种错误。但只要把sum ...

不是这个,错误信息在上面,把完整的输出复制一下,贴上来
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 20:37:11 | 显示全部楼层
人造人 发表于 2021-5-8 20:32
不是这个,错误信息在上面,把完整的输出复制一下,贴上来

这个吗
22.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 20:43:52 | 显示全部楼层    本楼为最佳答案   

对,是这个
把35行和36行调换一下位置看看
  1. #include <stdio.h>
  2. #include <math.h>

  3. int main()
  4. {
  5.         unsigned long long sum ;  //本来在这里赋初值
  6.         unsigned long long temp;
  7.         unsigned long long weight;
  8.         int i;
  9.         sum = 0;                   //但现在在这里赋初值,为什么会错误

  10.         for (i=0; i < 64; i++)
  11.         {
  12.                 temp = pow(2, i);
  13.                 sum = sum + temp;
  14.         }

  15.         weight = sum / 25000;

  16.         printf("舍罕王应该给予达依尔%llu粒麦子!\n", sum);
  17.         printf("如果每25000粒麦子为1kg,那么应该给%llu公斤麦子!\n", weight);
  18.                 getchar();
  19.         return 0;
  20. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 20:48:06 | 显示全部楼层
人造人 发表于 2021-5-8 20:43
对,是这个
把35行和36行调换一下位置看看

竟然神奇的编译成功了,请问是为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 20:50:27 | 显示全部楼层
人造人 发表于 2021-5-8 20:43
对,是这个
把35行和36行调换一下位置看看

难道声明还要放在一起?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 20:58:46 | 显示全部楼层
好神奇的错误
我用Dvc++没错误
编译器的锅吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 21:01:52 | 显示全部楼层
害羞的新手 发表于 2021-5-8 20:58
好神奇的错误
我用Dvc++没错误
编译器的锅吧

我也不想用这个的,学校考试要用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 21:01:57 | 显示全部楼层
pregnant 发表于 2021-5-8 20:50
难道声明还要放在一起?

你的编译器太老了,定义变量必须放在函数的开头
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-8 21:02:58 | 显示全部楼层
pregnant 发表于 2021-5-8 20:50
难道声明还要放在一起?

对于你目前的这个编译器来说却是这样的,而且要放在函数的最前面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-8 21:05:00 | 显示全部楼层
人造人 发表于 2021-5-8 21:01
你的编译器太老了,定义变量必须放在函数的开头

明白,非常感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 08:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表