我只是想學習c而我被卡住了。我正在嘗試創建一個可以輸入兩個數字的程序,並與操作員一起打印出答案。在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;
}
這個工作在懷疑,並將其寫入了數字1和數字2的總和。然而,當我試圖傳遞一個字符作爲參數傳遞給函數計算,像這樣
#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
是沒可能通過一個char在C參數?我不明白爲什麼這不起作用時,它與int。我在這裏搜索了很多,但問題通常只包括傳遞一組字符作爲參數,而不是字符。
還是我這樣做全錯了?
最後一個問題的解決方案很簡單:使用C編譯器編譯C代碼。 –
@KeithThompson:好的,但我看到很多人用C++編譯器編譯它們的C代碼。 – AusCBloke
我還是不明白。爲什麼它使用int作爲參數,但沒有兩個整數和char?如果是我還沒有申報,那麼在這種情況下是否也應該收到錯誤消息? – user1661303