我想把log10(2)的结果赋给一个常数。
我做的

const float f = log10(2);

它告诉我们。我还定义了一个新函数
const float Log10(float f) {
    return (const float)log10(f);
}

但是编译器在抱怨(为什么不呢我也在使用Initializer element is not a constant expression函数)这是否意味着没有函数可以返回常数?那我该怎么做?
编辑:
正如有些人所怀疑的,我包含了log10头文件并将其与Type qualifiers are ignored on function's return type链接,但是我在gcc中使用了math.h选项,它不接受它。

最佳答案

这样就行了

#include <stdio.h>
#include <math.h>

int main() {
    const float f = log10(2);
    printf("%f\n", f);
}

但这行不通
#include <stdio.h>
#include <math.h>

const float f = log10(2);

int main() {
    printf("%f\n", f);
}

因为不能从函数返回值初始化全局变量。
请注意,编译器警告将floatdouble混合。除非有很好的理由不能使用float,否则不要使用double

关于c - 将`log10(2)`的结果赋给常量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51447810/

10-11 18:42