18

次のような単純な式を使用しようとしていますが、結果は 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 になることを期待していました。

4

1 に答える 1

18

を見ると、ifステートメントの形式は次のようになります。

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

また、代入は:=単に の代わりに使用し=ます。したがって、次の文字列を使用する必要があります。

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

于 2013-09-18T16:37:46.070 に答える