【问题标题】:'expected expression' error within if statementif 语句中的“预期表达式”错误
【发布时间】:2016-03-03 03:43:10
【问题描述】:

我不得不通过我的数据结构类快速学习 C++。我以前只有使用 java 的经验,这就是为什么我的错误感觉微不足道,但我很难弄清楚。我收到“预期表达”错误,不确定它告诉我什么。我尝试将我的文字表达式换成 ASCii 代码值之类的东西。该错误发生在我的所有 if 语句中。我确实有所有需要的“#include”语句。感谢您的帮助。

stack<double> doublestack;
char *input = new char[255]();
char *token = new char[255]();
cout << "Enter a valid postfix expression" << endl;
cin.getline(input, 255);
token = strtok(input, " ");
while (token != NULL) {
    if (token* == '*')
    {
        double b = doublestack.top();
        double a = doublestack.top();
        doublestack.pop();
        doublestack.pop();
        doublestack.push(b * a);
    }
    else if (token* == '/')
    {
        double b = doublestack.top();
        double a = doublestack.top();
        doublestack.pop();
        doublestack.pop();
        doublestack.push(b / a);
    }
    else if (token* == '+')
    {
        double b = doublestack.top();
        double a = doublestack.top();
        doublestack.pop();
        doublestack.pop();
        doublestack.push(b + a);
    }
    else if (token* == '-')
    {
        double b = doublestack.top();
        double a = doublestack.top();
        doublestack.pop();
        doublestack.pop();
        doublestack.push(b - a);
    }
    else
    {
        doublestack.push(atof(token));
    }
    token = strtok(NULL, " ");
}

如果知道有帮助,我会得到一个后缀表达式并将数字推入堆栈。当我找到一个操作字符时,我会弹出前两个数字来执行操作。后缀完成后,我应该留下一个数字,这就是后缀表达式的答案。

报错信息如下...

stack1.cpp:24:20: error: expected expression
    if (token* == '*')
               ^
stack1.cpp:32:25: error: expected expression
    else if (token* == '/')
                    ^
stack1.cpp:40:25: error: expected expression
    else if (token* == '+')
                    ^
stack1.cpp:48:25: error: expected expression
    else if (token* == '-')

【问题讨论】:

  • 请输入完整的错误信息,它可能至少会告诉你有问题的行号..
  • 我从未见过token* 语法,Java 中也没有..
  • token* 应该是什么意思?
  • 如果我不使用对指针的取消引用,它会引发另一个错误。它是说指针和整数('char '和'int')之间的比较 if (token == '')
  • 解引用 * 在变量之前,而不是之后。例如if (*token == '*')

标签: c++ arrays compiler-errors


【解决方案1】:

在这种情况下,a = b

    double b = doublestack.top();
    double a = doublestack.top();
    doublestack.pop();
    doublestack.pop();

猜你想获取最后一个值(top()),然后从堆栈中删除它(pop()),然后获取下一个最后一个值,依此类推

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    • 2021-08-30
    相关资源
    最近更新 更多