![](/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.