c语言编译时为什么报错D:\c学习\collect2.exe [Error] ld returned 1 exit status
昨天写了一个开立方的程序,但发生了这样的报错D:\c学习\collect2.exe ld returned 1 exit status代码如下:
#include <stdio.h>
#include <math.h>
int main()
{
double a;
double b;
printf("请输入你想要开立方的数字:");
scanf("%f",&a);
b = pow(a , 1/3);
printf("结果是:%f",b);
return 0;
}
求大神解答。 1/3=0 连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个main函数。
你这报错信息也不全啊。
只有pow函数的第二个参数用1/3确实会导致运算结果都是a的0次方。但这是逻辑错误,只会导致运行结果错误,可以改成1.0/3。这是后话。
目前的错误是可执行文件生成错误。 major_lyu 发表于 2020-3-8 21:43
连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个ma ...
可我只知道这些,只有一个工程,一个main函数,至于目标文件collect2.exe没有写入权限,或者被别的进程调用这些我确实不知道。 major_lyu 发表于 2020-3-8 21:43
连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个ma ...
不知道为什么,今天又不报错了,可改成1.0/3后结果全是0.000000 major_lyu 发表于 2020-3-8 21:43
连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个ma ...
当我把a的数据类型改成int时,程序就正常运行了,可如果我想计算一个小数的开立方怎么办。
本帖最后由 major_lyu 于 2020-3-9 13:12 编辑
心鲜旅人 发表于 2020-3-9 06:14
不知道为什么,今天又不报错了,可改成1.0/3后结果全是0.000000
#include <stdio.h>
#include <math.h>
int main()
{
double a;
double b;
printf("请输入你想要开立方的数字:");
//scanf("%f",&a);
scanf("%lf",&a); //double 类型的数据要用lf读入, 这个一般的编辑器都会提示的
b = pow(a , 1.0/3);
printf("结果是:%f",b);
return 0;
} major_lyu 发表于 2020-3-9 13:11
感谢大神,我平时还是忽视了好多细节啊。
页:
[1]