在 C 程序中,为什么我收到错误 sample.c:(.text+0xb4): undefined reference to `pow
In the C program why am I getting an error of sample.c:(.text+0xb4): undefined reference to `pow
我正在编写一个 C 程序,用于确定一个数字是否为阿姆斯特朗数字。
这是代码:
#include <stdio.h>
#include <math.h>
int main(){
int inp,count,d1,d2,rem;
float arm;
printf("the number: ");
scanf("%d",&inp);
d1 = inp;
d2 = inp;
// for counting the number of digits
while(d1 != 0){
d1 /= 10;
++count;
}
//for checking whether the number is anarmstrong number or not
while(d2 != 0){
rem = (d2 % 10);
arm += pow(rem,count);
d2 /= 10;
}
printf("%f",arm);
return 0;
}
(文件名:sample.c)
我希望程序将输出显示为:
the number:
但它显示以下错误:
usr/bin/ld: /tmp/ccleyeW0.o: in function `main':
sample.c:(.text+0xb4): undefined reference to `pow'
collect2: error: ld returned 1 exit status
我什至使用了 GCC -o sample sample.c -lm
命令,但仍然出现错误。
所以我想知道是什么导致了这个错误,我该如何解决这个问题。
如以上评论所述,您应该使用 gcc -o sample sample.c -lm
编译您的程序。 -lm
参数确保您的程序链接到数学库。
除此之外,这不仅是一种良好的风格,而且有必要在使用 C 语言变量之前对其进行初始化。在这种情况下,变量 arm
和 count
没有被初始化。尤其是 arm
的值肯定会引起麻烦,因为当你 运行 你的程序时,它会拥有分配给它的内存位置的任何值(垃圾值),这会导致不确定的行为.将两个变量都初始化为 0 应该可以修复您的代码。
我正在编写一个 C 程序,用于确定一个数字是否为阿姆斯特朗数字。 这是代码:
#include <stdio.h>
#include <math.h>
int main(){
int inp,count,d1,d2,rem;
float arm;
printf("the number: ");
scanf("%d",&inp);
d1 = inp;
d2 = inp;
// for counting the number of digits
while(d1 != 0){
d1 /= 10;
++count;
}
//for checking whether the number is anarmstrong number or not
while(d2 != 0){
rem = (d2 % 10);
arm += pow(rem,count);
d2 /= 10;
}
printf("%f",arm);
return 0;
}
(文件名:sample.c)
我希望程序将输出显示为:
the number:
但它显示以下错误:
usr/bin/ld: /tmp/ccleyeW0.o: in function `main':
sample.c:(.text+0xb4): undefined reference to `pow'
collect2: error: ld returned 1 exit status
我什至使用了 GCC -o sample sample.c -lm
命令,但仍然出现错误。
所以我想知道是什么导致了这个错误,我该如何解决这个问题。
如以上评论所述,您应该使用 gcc -o sample sample.c -lm
编译您的程序。 -lm
参数确保您的程序链接到数学库。
除此之外,这不仅是一种良好的风格,而且有必要在使用 C 语言变量之前对其进行初始化。在这种情况下,变量 arm
和 count
没有被初始化。尤其是 arm
的值肯定会引起麻烦,因为当你 运行 你的程序时,它会拥有分配给它的内存位置的任何值(垃圾值),这会导致不确定的行为.将两个变量都初始化为 0 应该可以修复您的代码。