ExprTk中的简单数学表达式

Mis*_*tyD 15 c++ exprtk

我试图使用一个简单的表达式,如下所示,结果应该是z的值变为1.但是,似乎没有任何关于如何解决这个问题的建议?

template<typename t>
void MyTestB()
{

    t x = 1.0;
    t z = 0;

    std::string e = "if((x + 2) == 3){z=1;}";
    exprtk::symbol_table<t> symbol_table;
    symbol_table.add_variable("x",x);
    symbol_table.add_variable("z",z);

    exprtk::expression<t> expression;
    expression.register_symbol_table(symbol_table);


    exprtk::parser<t> parser;

    parser.compile(e,expression);
    t y = expression.value();
    std::cout << z;
}
Run Code Online (Sandbox Code Playgroud)

程序确实在y = NAN完成(这是可以理解的,因为表达式是条件语句)但是z仍然是0.我期待它变为1

Tay*_*ter 15

看一下这些例子,看来if语句应该有以下形式:

if (condition, expression if true, expression if false)

另外,赋值使用:=而不仅仅是=.所以你应该使用字符串:

if((x + 2) == 3, z := 1, 0)