繁体   English   中英

评估一个 int、char 和 int

[英]Evaluate an int, char and int

我的问题是我正在处理的当前应用程序需要将一个 int 添加到另一个带有 char 的 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 并且也把这个答案放在一个变量中。

使用switch语句似乎很合适:

int c;

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

你必须在某处定义一些代码来定义你的操作员做什么。 幸运的是,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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM