c - 错误: Conflicting types for 'pow' in C

标签 c function conflict pow

程序应该从用户那里获取大写和小写字母,并且每个字母都分配给一个值。

示例。 S 为 0,K 为 1,E 为 2。
总值公式为((A*10)+(B))*10^C

A - 第一个输入 B - 第二个输入 C 是第三个输入。
函数 int lettervalue(char letter) 应该返回字母的值。 我使用 switch 结构来分配字母值。

每次编译时都会出现错误:'pow'的类型冲突。 pow 函数是否接受变量,我应该在函数 int lettervalue(char letter) 中更改一些内容吗?

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

int pow(int x, int y);

int lettervalue(char letter)
{
    int val;
    switch (letter){
        case 'S':
        case 's':
            val = 0;
            break;
        case 'K':
        case 'k':
            val = 1;
            break;
        case 'E':
        case 'e':
            val =2;
            break;
    }
    return val;
}

int main(void)
{   int valueA, valueB, valueC, totalvalue;
    char A, B, C;
    printf("Please input the letter: ");
    scanf("%c%c%c", &A, &B, &C);                
    valueA = lettervalue(A)*10;
    valueB = lettervalue(B);
    valueC = lettervalue(C);
    totalvalue = (valueA+valueB)*pow(10, valueC);
    printf("The total value is %d", totalvalue );

    return 0;
}

最佳答案

代码不必要地提供了 pow() 原型(prototype),该原型(prototype)与 math.h 中的原型(prototype)不一致。

#include <math.h>
// math.h provides: double pow(double x, double y);

消除int pow(int x, int y);

更改代码

// totalvalue = (valueA+valueB)*pow(10, valueC);
totalvalue = (valueA+valueB)* ((int)pow(10, valueC));

或者

double total;
total = (valueA+valueB)*pow(10, valueC);
printf("The total value is %.0lf", total );

请务必链接到数学库以避免“对 pow 的 undefined reference ”。

"undefined reference to `pow'" even with math.h and the library link -lm

关于c - 错误: Conflicting types for 'pow' in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20954573/

相关文章:

从 C 调用 Racket 函数

c - 如何包含空格?

c - 使用 C 预处理器生成两个函数

JavaScript:如何在不破坏功能的情况下返回 false 链接?

javascript - jQuery 克隆形式增加名称、类、ID、数据 ID 等所有属性

svn分支合并树冲突问题(使用乌龟)

opencv - OpenCV 上的 Libpng 冲突?

c - C中void指针的指针运算

R 检查是否有任何缺少的参数

windows - Windows 命令行 merge 工具