我试图使用如下的简单表达式,结果应该是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;
}
程序确实在y = NAN完成(这是可以理解的,因为表达式是条件语句)但是z仍然是0.我期待它变成1
答案 0 :(得分:15)
查看the examples,似乎if
语句的格式应为:
if (condition, expression if true, expression if false)
此外,作业使用:=
而非=
。所以你应该使用字符串:
if((x + 2) == 3, z := 1, 0)