21xrx.com
2024-12-22 21:15:27 Sunday
登录
文章检索 我的文章 写文章
C++表达式求值代码
2023-07-06 06:10:44 深夜i     --     --
C++ 表达式 求值 代码

C++是一种通用编程语言,其语法强大,可以实现各种复杂的功能。其中表达式求值是C++中重要的一个方面,涉及到各种数学运算、逻辑运算以及位运算。本文将介绍如何使用C++编写表达式求值代码。

首先,我们需要了解C++语言中的运算符和表达式。常见的运算符包括算术运算符、比较运算符、逻辑运算符以及位运算符。如下所示:

算术运算符:+ - * / %

比较运算符:== != > < >= <=

逻辑运算符:&& || !

位运算符:& | ^ ~

表达式是由运算符和操作数组成的,它可以使用括号来控制表达式的计算顺序。例如,以下表达式将先计算b+c的值,再将结果乘以a:

a * (b + c)

要编写表达式求值代码,我们可以使用C++中的算法和数据结构。一种常见的方法是使用栈来处理表达式,具体过程如下:

1. 遍历表达式,如果是数字,则将其压入栈中;

2. 如果是运算符,则弹出两个数字进行计算,并将结果压入栈中;

3. 最终栈中只留下一个数字,即为表达式的值。

下面是一个简单的C++代码实现:

#include

#include

#include

using namespace std;

int eval(string s) {

  stack st;

  int res = 0, num = 0, sign = 1;

  for (char c : s) {

    if (isdigit(c)) {

      num = num * 10 + (c - '0');

    } else if (c == '+') {

      res += sign * num;

      num = 0;

      sign = 1;

    } else if (c == '-') {

      res += sign * num;

      num = 0;

      sign = -1;

    } else if (c == '(') {

      st.push(res);

      st.push(sign);

      res = 0;

      sign = 1;

    } else if (c == ')') {

      res += sign * num;

      num = 0;

      res *= st.top(); st.pop();

      res += st.top(); st.pop();

    }

  }

  if (num != 0) res += sign * num;

  return res;

}

int main() {

  string s = "(1+2)*3-4/2";

  cout << eval(s) << endl;

  return 0;

}

以上代码实现了一个简单的表达式求值功能,它支持加减乘除和括号运算,并且可以处理多位数字和负号。在实际应用中,表达式求值可以用于计算器、编译器等许多领域,是C++编程中必不可少的一部分。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复