私はcを学ぼうとしているだけで、行き詰まっています。演算子と一緒に 2 つの数字を入力して、答えを出力できるプログラムを作成しようとしています。
表記は逆ポーランド記法です。つまり、入力 2 1 + は出力 3 を提供し、入力 2 1 * は出力 2 を提供する必要があります。
後で、いくつかのスタック ベースのものを使用して rpn に長い式を入力できるように拡張しますが、ここではオペランドが 2 つだけの場合に焦点を当てます。
これは私がやったことです:
#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 の合計を書き出します。しかし、関数 calculate に引数として文字を渡そうとすると、このように
#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 で動作するときにこれが動作しない理由がわかりません。私はこれについて何度もグーグルで検索しましたが、質問は通常、文字ではなく文字の配列を引数として渡すことのみをカバーしています。
それとも、私はこれをすべて間違っていますか?