c++ - ExprTk 中的简单数学表达式

标签 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;
}

程序确实在 y = NAN 处结束(这是可以理解的,因为表达式是一个条件语句)但是 z 仍然保持为 0。我原以为它会变成 1

最佳答案

the examples ,看来 if 语句应该具有以下形式:

if(条件,表达式为真,表达式为假)

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

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

关于c++ - ExprTk 中的简单数学表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18875608/

相关文章:

C++ QList 常量正确性

c++ - 从双指针数组读取 - NULL

c++ - ExprTK 未知变量解析取决于表达式类型

c++ - ExprTk:当表达式的值改变时是否必须重新编译表达式

c++ - 在书中的示例代码 "introduction to 3d game programming with directx 11"

c++ - 未声明的标识符

c++ - 精度更高的 ExprTk

c++ - Exprtk 解析器无法在 VS 2015 上运行?

c++ - 从 exprtk 编译 win32 库

c++ - OpenCV - 来自手机摄像头的 FPS 不正确