C++计算器不适用于*运算符

Nap*_*eon 0 c++ debugging

我正在使用Stroustrup的编程原理和实践学习c ++,并且有一个示例代码,一个是调试并使其工作.我已经进行了更正,当您输入使用+或 - 运算符的算术表达式时,它可以正常工作.但是,当我使用*运算符输入表达式时,没有任何反应.我使用调试器来帮助我完成代码,但我无法弄明白.本书使用非标准包含文件std_lib_facilities.h

实际的计算器程序在这里.有人可以帮助我弄清楚为什么表达像2*3; 在2 + 3时没有产生结果; 作品?

PS:根据程序,有效表达式必须;在最后触发打印.所以2 + 3; 是正确的,将触发和打印但2 + 3没有;意志只会导致光标只是保持闪烁.请不要这样,它是第一次尝试生成计算器程序,因此它缺少很多功能.我现在关心的是弄清楚为什么涉及*运算符的简单算术表达式不起作用.谢谢.

[编辑]

谢谢@KonradRudolph的回答.但令我感到困惑的是,当我使用gdb调试器(我在Linux上)时,当我输入带*的表达式时,调试器不会进入术语.现在我知道有一个错误但是,我期待它至少进入该功能并挂在那里的某个地方.为什么调试器不会进入有错误的函数?那会更有帮助.

Kon*_*lph 5

那么你根本没有做出所有必要的修正.

term:

    switch (t.kind) {
    case '*':
        left *= primary();
        t = ts.get();
    case '/':
        {    
            double d = primary();
            if (d == 0) error("divide by zero");
            left /= d; 
            t = ts.get();
            break;
        }
    default: 
        ts.putback(t);     // put t back into the token stream
        return left;
    }
Run Code Online (Sandbox Code Playgroud)

case '*'缺少一个break声明.

可能会有更多错误.

  • (我的代码也有一些问题,特别是`std_lib_facilities.h` - Stroustrup的想法是什么?!) (3认同)