心鲜旅人 发表于 2020-3-8 20:17:55

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;
}
求大神解答。

wp231957 发表于 2020-3-8 20:34:16

1/3=0

major_lyu 发表于 2020-3-8 21:43:29

连接的时候出错了。感觉目标文件collect2.exe没有写入权限,或者被别的进程调用了。或者你这个工程有多个main函数。
你这报错信息也不全啊。
只有pow函数的第二个参数用1/3确实会导致运算结果都是a的0次方。但这是逻辑错误,只会导致运行结果错误,可以改成1.0/3。这是后话。
目前的错误是可执行文件生成错误。

心鲜旅人 发表于 2020-3-9 05:52:35

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

可我只知道这些,只有一个工程,一个main函数,至于目标文件collect2.exe没有写入权限,或者被别的进程调用这些我确实不知道。

心鲜旅人 发表于 2020-3-9 06:14:52

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

不知道为什么,今天又不报错了,可改成1.0/3后结果全是0.000000

心鲜旅人 发表于 2020-3-9 06:35:08

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

当我把a的数据类型改成int时,程序就正常运行了,可如果我想计算一个小数的开立方怎么办。

major_lyu 发表于 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;
}

心鲜旅人 发表于 2020-3-9 18:32:45

major_lyu 发表于 2020-3-9 13:11


感谢大神,我平时还是忽视了好多细节啊。
页: [1]
查看完整版本: c语言编译时为什么报错D:\c学习\collect2.exe [Error] ld returned 1 exit status