评估int,char和int

时间:2015-11-27 13:19:46

标签: c++ char int addition subtraction

我的问题是我正在处理的当前应用程序需要使用char将int添加到另一个int。

代码可以更好地解释它。

const char operatorArray[3] = {'+', '-', 'x'}; 
int randOperator = rand() % 3;
char Operator = operatorArray[randOperator];

int a = 1;
int b = 2;

所以这里我有一个char的运算符(Operator)和两个整数的数字。

我想要(操作员b),例如1 + 2,并将该答案放在变量中。

2 个答案:

答案 0 :(得分:0)

使用switch语句似乎是合适的:

int c;

switch(Operator)
{
case '+':
    c = a + b;
    break;
case '-':
    c = a - b;
    break;
case 'x':
    c = a * b;
    break;
}

答案 1 :(得分:0)

您必须定义某些代码来定义您的运算符所执行的操作。幸运的是,C ++ 11可以帮助您:

#include <iostream>
#include <map>
#include <functional>

template<typename T>
T eval(char op, T a, T b)
{
    static const std::map<char, std::function<T(T, T)> > operators = {
        { '+', [](T a, T b){return a + b; } },
        { '-', [](T a, T b){return a - b; } },
        { '/', [](T a, T b){return a / b; } },
    };
    auto it = operators.find(op);
    return it->second(a, b);
}

int main()
{
    std::cout << "3       +  4    = " << eval('+', 3, 4) << std::endl;
    std::cout << "3.0     -  1.5  = " << eval('-', 3.0, 1.5) << std::endl;
    std::cout << "(-2.f)  /  8.f = "  << eval('/', -2.f, 8.f) << std::endl;
    return 0;
}

使用g++ -std=c++11 -Wall -Wextra -Werror main.cpp进行编译。

输出:

3       +  4    = 7
3.0     -  1.5  = 1.5
(-2.f)  /  8.f  = -0.25