Простое математическое выражение в 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

15

Решение

Смотря на примеры, похоже, что if Заявления должны иметь форму:

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

Кроме того, назначение использует := вместо просто =, Поэтому вы должны использовать строку:

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

15

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]