首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何求数的原根

如何求数的原根
EN

Stack Overflow用户
提问于 2012-04-25 15:32:37
回答 1查看 3K关注 0票数 1

这是我试图编译的代码,用来查找原语root...but,它给我的错误是。

代码语言:javascript
复制
int isPrimitive (int q, int a) {
int i,z;
double k,s;

s=1;
i=0;

double *factors=malloc(sizeof(double)*q-2);    

while (s>0 && i<q-2) {
    k=pow(a,i);
    s=k-(q*floor(k/q));
    for (z=0;z<(sizeof(*factors)/sizeof(factors[0]));z++) {
        if (factors[z]==s) {
            return 0;
        }
    }
    factors[i]=s;
    i++;
}

在这里的代码行double *factors=malloc(sizeof(double)*q-2); // error中,出现了从void*到double*的无效转换。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-25 15:53:18

这个问题几乎可以肯定是在C代码上使用C++编译器。在C中,void*可以在没有强制转换的情况下转换为任何指针类型,而在C++中并非如此,因此出现了错误消息。基本上有两种解决方案:使用C编译器(例如,gcc而不是g++),或者强制转换malloc的结果。

后者可以通过以下方式完成:

代码语言:javascript
复制
double *factors = static_cast<double*> (malloc(sizeof(double)*(q-2)));

但是,如果您实际上是在编写C++,那么使用new []语法会更好:

代码语言:javascript
复制
double *factors = new double [q-2];

(请注意,这需要使用delete[] factors而不是free(factors))

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10311251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档