追加のために文字「+」を+に変換するにはどうすればよいですか? 私は、ユーザーが演算子 +-*/ を入力してから、演算子を出力するようなことをしようとしています b.
一連の if ステートメントを実行することもできますが、これをより効率的に実行する方法があるかどうか疑問に思っていましたか?
if (operator == "+") {cout << a + b;}
else if (operator == "-") {cout << a - b;}
等..
追加のために文字「+」を+に変換するにはどうすればよいですか? 私は、ユーザーが演算子 +-*/ を入力してから、演算子を出力するようなことをしようとしています b.
一連の if ステートメントを実行することもできますが、これをより効率的に実行する方法があるかどうか疑問に思っていましたか?
if (operator == "+") {cout << a + b;}
else if (operator == "-") {cout << a - b;}
等..
token
は、演算子を取得する char であると仮定してスイッチを使用し、 op1
andop2
は 2 つのオペランドです。
switch (token)
{
case '/':
val = op1 / op2;
break;
case '*':
val = op1 * op2;
break;
case '+':
val = op1 + op2;
break;
case '-':
val = op1 - op2;
break;
}
関数ポインターでマップを使用できます。
int addition(int a, int b){
return a + b;
}
std::map<char, int(*)(int, int)> operators;
operators.insert(make_pair('+', addition));
char c = getch();
int first_operand = 10;
int second_operand = 20;
int result = operators[c](first_operand, second_operand);
このようなマップも使用できます。この場合、効率はあまり重要ではないと思います。
cout << operators[op](a, b);
この場合、スイッチを使用する方が良いと思います。そうでなければ、解決策は私には問題ないようです。