有人可以解释这个 C 错误消息吗?

标签 c xcode switch-statement

我正在编写一个程序来获取两个数字和一个运算符并执行计算。我以前用 Objective-C 编写过它,现在回过头来尝试用 switch 语句用 C 编写它。我不断收到以下错误消息: “将‘double’传递给不兼容类型‘cont char *’的参数”与我调用和打印我的函数的那一行有关(就在 return 0; 之前)。我想了解真正导致此问题的原因(与只是找出解决方法相比)。我想确保我可以避免这种情况发生,无论出于何种原因。

 #include <stdio.h>
    double calculator(double x,char y, double z) {
        switch (y) {
            case '+':
                return x+z;
                break;
             case '-':
                return x-z;
                break;
            case '/':
                return x/z;
                break;
            case '*':
                return x*z;
                break;
            default:
                return 0;
                break;
                }
    }


    int main(int argc, const char * argv[]) {

        char y;
        double x, z;

        printf ("Please enter a number to be operated on\n");
        scanf("%lf", &x);
        printf ("Enter a valid operator\n");
        scanf("%s", &y);
        printf("Please enter a second number to complete the calculation\n");
        scanf("%lf", &x);

        printf (calculator(x,y,z));

                return 0;

    }

最佳答案

printf()的原型(prototype)是

printf(const char*,...);

但是你将 double 传递给它因此错误

关于有人可以解释这个 C 错误消息吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30083222/

相关文章:

c++ - pthread 我可以获得原始参数吗?

c - Timespec 重新定义错误

ios - 验证/提交错误 : Application failed codesign verification

javascript - 在带有 event.code 的 switch 语句中使用 JavaScript 运算符

objective-c - 我可以在 Objective-C switch 语句中声明变量吗?

c# - switch 语句 - 验证子串

c - C 中的可变参数 scanf

c - ELF 对象文件和共享对象之间的 ELF header 有哪些区别?

iphone - 在调试或发布/分发模式下编译时 iOS 应用程序的性能

iphone - TableView 中文本字段的输入 View