我只是想学习c,但我被卡住了。我正在尝试创建一个程序,该程序可以输入两个数字以及一个运算符并打印出答案。
该符号是反向波兰符号。也就是说,输入 2 1 + 应该给输出 3,输入 2 1 * 应该给输出 2。
稍后,我将扩展它,以便您可以在 rpn 中使用一些基于堆栈的东西输入更长的表达式,但现在让我们专注于只有两个操作数的情况。
这就是我所做的:
#include <stdio.h>
main()
{
int number1;
int number2;
char operator;
scanf("%d %d %c", &number1, &number2, &operator);
printf("%d", calculate(number1, number2));
}
int calculate(int number1, int number2)
{
return number1+number2;
}
这在怀疑时有效,它会写出 number1 和 number2 的总和。但是,当我尝试将字符作为参数传递给函数计算时,就像这样
#include <stdio.h>
main()
{
int number1;
int number2;
char operator;
scanf("%d %d %c", &number1, &number2, &operator);
printf("%d", calculate(number1, number2, operator));
}
int calculate(int number1, int number2, char operator)
{
return number1+number2;
}
我得到一个编译错误
rpn.c:12:5: error: conflicting types for ‘calculate’
rpn.c:13:1: note: an argument type that has a default promotion can’t match an empty parameter name list declaration
rpn.c:9:15: note: previous implicit declaration of ‘calculate’ was here
不能在c中将char作为参数传递吗?我不明白为什么当它与 int 一起使用时它不起作用。我已经对此进行了很多搜索,但这些问题通常只涉及传递一个字符数组作为参数,而不是一个字符。
还是我做错了?