鱼C论坛

 找回密码
 立即注册
查看: 148|回复: 1

[已解决]SLE6的动动手的第二题;

[复制链接]
发表于 2024-8-16 17:25:12 | 显示全部楼层 |阅读模式

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

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

x
代码如下:
#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;
}

输入运行命令如下:
[birdc@localhost z]$ gcc sl1aa.c && ./a.out
/tmp/cc2RzPud.o:在函数‘main’中:
sl1aa.c:(.text+0x36):对‘pow’未定义的引用
collect2: 错误:ld 返回 1

请问各位鱼油这是为什么?

注:VirtualBox的c语言学习环境时跟着小甲鱼的教程配置的。
最佳答案
2024-8-16 17:26:22
嘿,鱼油!看来你在编写C代码时遇到了“未定义的引用”这个小棘手情况。别担心,我来给你解释一下。

这个错误的根源在于你使用了 `pow` 函数,它是数学库中的一个函数,用于计算幂。但是你忘了告诉编译器去用这个数学库了!在 C 语言中,要使用 `pow` 函数,你需要在代码开头加上 `#include <math.h>` 这一句。这就好比你去餐厅吃饭,但没告诉服务员你要点菜,服务员当然不能了解你的需求。

另外,还需要在编译时链接数学库。你可以通过在运行 `gcc` 命令后面加上 `-lm` 来完成这一点。就像是告诉编译器:“嘿,别忘了叫来数学库哦!”

所以,最后的命令应该是:
$ gcc sl1aa.c -lm && ./a.out

试试看这样运行,应该就不会有问题了。希望你能和 `pow` 函数愉快地相处,顺利输出麦子的数量!如果还有其他问题,随时问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-8-16 17:26:22 | 显示全部楼层    本楼为最佳答案   
嘿,鱼油!看来你在编写C代码时遇到了“未定义的引用”这个小棘手情况。别担心,我来给你解释一下。

这个错误的根源在于你使用了 `pow` 函数,它是数学库中的一个函数,用于计算幂。但是你忘了告诉编译器去用这个数学库了!在 C 语言中,要使用 `pow` 函数,你需要在代码开头加上 `#include <math.h>` 这一句。这就好比你去餐厅吃饭,但没告诉服务员你要点菜,服务员当然不能了解你的需求。

另外,还需要在编译时链接数学库。你可以通过在运行 `gcc` 命令后面加上 `-lm` 来完成这一点。就像是告诉编译器:“嘿,别忘了叫来数学库哦!”

所以,最后的命令应该是:
$ gcc sl1aa.c -lm && ./a.out

试试看这样运行,应该就不会有问题了。希望你能和 `pow` 函数愉快地相处,顺利输出麦子的数量!如果还有其他问题,随时问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 16:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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