나는 방금 C를 배우려고 노력 중이며 막혀있다. 나는 연산자와 함께 두 숫자의 입력을 받아서 대답을 인쇄 할 수있는 프로그램을 만들려고합니다.C에서 인수로 char 전달 Q
표기법은 폴란드어 표기법을 반대로합니다. 즉, 입력 2 1 +는 출력 3을 제공해야하고, 입력 2 1 *은 출력 2를 제공해야합니다.
나중에, 일부 스택 기반으로 더 긴 표현식을 rpn에 입력 할 수 있도록 확장 할 것입니다. 이제는 두 개의 피연산자 만 사용하여 사례에 집중할 수 있습니다.
이 내가 한 일이다
이 의심에서 작동하고 번호 1 및 번호 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;
}
. 나는이
#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에서 인수로 문자를 통과 할 수 없습니다를 얻을 ? int로 작동 할 때 왜 작동하지 않는지 이해할 수 없습니다. 나는 이것에 대해 많이 봤지만 질문은 대개 char가 아닌 char의 배열을 char로 전달하는 것을 다룹니다.
아니면이 모든 것을 잘못하고 있습니까?
마지막 문제에 대한 해결책은 간단합니다. C 컴파일러를 사용하여 C 코드를 컴파일합니다. –
@KeithThompson : 좋은 지적이지만, 많은 사람들이 C++ 컴파일러로 C 코드를 컴파일하는 것을 보았습니다. – AusCBloke
아직 이해가 안됩니다. 인수가 int로 작동하지만 두 int와 char로는 작동하지 않는 이유는 무엇입니까? 내가 아직 선언하지 않았다면, 그 경우에도 오류 메시지가 표시되지 않습니까? – user1661303