작성
·
312
·
수정됨
1
안녕하세요, 아래 코드를 작동하던 중, op에 ++를 입력하여도 +로 입력받는 현상이 있습니다. 이유를 모르겠습니다.
감사합니다
#include <iostream>
using namespace std;
int getInt()
{
cout << "Enter int: ";
int x;
cin >> x;
std::cin.ignore(32767, '\n');
return x;
}
char getOperator()
{
cout << "Enter op: ";
char op;
cin >> op;
std::cin.ignore(32767, '\n');
return op;
}
void printResult(int x, char op, int y)
{
if (op == '+') cout << x + y << endl;
else if (op == '-') cout << x - y << endl;
else
{
cout << "Invalid op" << endl;
}
}
int main()
{
int x = getInt();
char op = getOperator();
int y = getInt();
cout << x << op << y << endl;
printResult(x, op, y);
return 0;
}
>>
Enter int: 234
Enter op: ++
Enter int: 3434
234+3434
3668
답변 2
3
안녕하세요, 답변 도우미 Soobak 입니다.
강의 내용과 관련된 코드이시군요,
리뷰를 해드리자면 getOperator
함수에서 op
변수의 자료형이 char
이기 때문입니다.C++
에서 >>
연산자는 whitespace(공백, 탭, 줄바꿈 등)
을 기본 구분자로 사용합니다.
따라서, cin >> op
코드에서 ++
을 입력하더라도,
변수 op
의 자료형이 char
이기 때문에 >>
연산자는 첫 번째 +
만을 읽고, 두 번째 +
문자는 무시합니다.
만약, ++
와 같이 두 문자로 이루어진 연산자를 처리하시고 싶으시다면,string
자료형을 사용하여 입력을 받은 후, 해당 문자열에서 별도의 조건들을 처리하여 코드를 작성하셔야 합니다.
1