![](/img/trans.png)
[英]Why does calling pow() in different contexts sometime yield different results?
[英]Why does this code yield an error with regards to the pow function?
#include <stdio.h>
#include <math.h>
int exp_for_level(int n) {
return (int)(100 * pow(n, 2.3));
}
int main(){
int x;
x = exp_for_level(6);
printf("%d", x);
return 0;
}
在在线编译器上运行此代码时收到以下错误
/tmp/cc28S7ML.o: In function exp_for_level':
main.c:(.text+0x19): undefined reference to `pow'
collect2: error: ld returned 1 exit status
我该如何纠正这个问题?
在我无法让它在在线编译器上工作之后,我遵循了一些其他线程的建议文件存储在我的 mac 上的文件 grades.c 我试过输入这个
$ gcc - Wall - lm -o grades grade . c
进入我的终端,我只是得到zsh error: command not found
关于这里的问题有什么想法吗? 我使用的在线编译器是https://www.tutorialspoint.com/compile_c_online.php
编辑:在我的帖子中,主要是我将 function 误写为 exp_to_level 而不是 exp_for_level。 没有复制粘贴整个代码,因为它太长了。 我缩小范围并将其重新输入到产生错误的部分。
您的代码中有一些错误,您定义了 function exp_for_level
但您使用exp_to_level
。
那么你的x
变量没有定义
如果您像这样修复代码:
#include <stdio.h>
#include <math.h>
int exp_for_level(int n) {
return (int)(100 * pow(n, 2.3));
}
int main(){
int x = exp_for_level(6);
printf("%d", x);
return 0;
}
你编译:
gcc -Wall powtest.c -o powtest -lm
有用。
关于在线编译器的错误:
出现undefined reference
错误是因为您缺少-lm
linker 选项。
单击Project->Compile Options
编辑在线编译器命令:
关于本地机器上的这个问题:
在我无法让它在在线编译器上工作之后,我遵循了一些其他线程的建议文件存储在我的 mac 上的文件 grades.c 我试过输入这个
$ gcc - Wall - lm -o grades grade. c
进入我的终端,我只是得到 zsh 错误:找不到命令
你没有安装编译器。
你应该安装clang
,看看这个问题
首先,您的 function 名称在主中是错误的,请看这里exp_for_level
并在 main 中将其exp_to_level
更改其中一个,然后在 main 中添加int x
以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.