计算器赋值函数返回异常结果问题求助
C++计算器赋值操作异常问题
我正在完成Bjarne Stroustrup所著《C++编程:原理与实践》第七章的习题2,需要为计算器实现赋值操作。代码总长500行,已排除经测试无问题的部分,问题出在assignment()函数中:在set_value()后输出变量d能得到正确值,但返回后却得到异常结果。例如输入let c = 3;能正常输出"= 3",但执行c = 2时输出-1.45682e+144而非2。
相关代码片段如下:
class Token { public: char kind; // what kind of token double value; // for numbers: a value string name; // for names: name itself Token(char ch) : kind(ch), value(0) {} Token(char ch, double val) : kind(ch), value(val) {} Token(char ch, string n) : kind(ch), name(n) {} }; class Variable { public: string name; double value; Variable(string n, double v) :name(n), value(v) { } }; void set_value(string s, double d) // set the Variable named s to d { for (int i = 0; i < var_table.size(); ++i) if (var_table[i].name == s) { var_table[i].value = d; return; } error("set: undefined variable ", s); } double assignment(string name) { Token t = ts.get(); if (t.kind != '=') error("= missing in declaration of ", name); double d = expression(); set_value(name, d); return d; }
已知信息:
ts.get()会返回对应Tokenexpression()功能正常- 调用
assignment()前变量已通过let声明 var_table是存储变量的vector<Variable>
多次排查未解决该问题。
内容的提问来源于stack exchange,提问作者bulug
相关产品推荐
相关产品推荐

