鱼C论坛

 找回密码
 立即注册
查看: 2439|回复: 7

[已解决]c语言编译时为什么报错D:\c学习\collect2.exe [Error] ld returned 1 exit status

[复制链接]
发表于 2020-3-8 20:17:55 | 显示全部楼层 |阅读模式

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

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

x
昨天写了一个开立方的程序,但发生了这样的报错D:\c学习\collect2.exe        [Error] 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;
}
求大神解答。
最佳答案
2020-3-9 13:11:18
本帖最后由 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-3-8 20:34:16 From FishC Mobile | 显示全部楼层
1/3=0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-8 21:43:29 | 显示全部楼层
连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个main函数。
你这报错信息也不全啊。
只有pow函数的第二个参数用1/3确实会导致运算结果都是a的0次方。但这是逻辑错误,只会导致运行结果错误,可以改成1.0/3。这是后话。
目前的错误是可执行文件生成错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 05:52:35 | 显示全部楼层
major_lyu 发表于 2020-3-8 21:43
连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个ma ...

可我只知道这些,只有一个工程,一个main函数,至于目标文件collect2.exe没有写入权限,或者被别的进程调用这些我确实不知道。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 06:14:52 | 显示全部楼层
major_lyu 发表于 2020-3-8 21:43
连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个ma ...

不知道为什么,今天又不报错了,可改成1.0/3后结果全是0.000000
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 06:35:08 | 显示全部楼层
major_lyu 发表于 2020-3-8 21:43
连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个ma ...

当我把a的数据类型改成int时,程序就正常运行了,可如果我想计算一个小数的开立方怎么办。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-9 13:11:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-3-9 18:32:45 | 显示全部楼层

感谢大神,我平时还是忽视了好多细节啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-15 20:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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