Go: package main

import (
	"bufio"
	"fmt"
	"go/token"
	"go/types"
	"os"
	"strconv"
	"strings"
)

func main() {
	stdin := bufio.NewScanner(os.Stdin)
	stdin.Scan()
	n, _ := strconv.Atoi(stdin.Text())
	for i := 0; i < n; i++ {
		stdin.Scan()
		exp := strings.TrimRight(stdin.Text(), "=")
		res, _ := types.Eval(token.NewFileSet(), nil, token.NoPos, exp)
		fmt.Println(res.Value)
	}
}

C++: #include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <functional>
#include <numeric>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <utility>
#include <sstream>
#include <complex>
#include <fstream>

using namespace std;

#define FOR(i,a,b) for(long long i=(a);i<(b);i++)
#define REP(i,N) for(long long i=0;i<(N);i++)
#define ALL(s) (s).begin(),(s).end()
#define fi first
#define se second

#define PI acos(-1.0)
#define INF 1000000007
#define MOD 1000000007
#define EPS 1e-10
#define MAX_N 100100
#define MAX_M 100100

typedef long long ll;
typedef pair<ll, ll> P;
typedef pair<double, double> PD;
typedef pair<string, ll> PS;
typedef vector<ll> V;
typedef pair<P, char> PC;
typedef pair<ll, string> PLS;

int n;
string s;

int changei(string t){
	int res;
	stringstream ss;
	ss << t;
	ss >> res;
	return res;
}

string changes(int num){
	string res;
	stringstream ss;
	ss << num;
	ss >> res;
	return res;
}

string s_calc(string t){
	string res = t;
	REP(i, res.size()){
		if (res[i] == '*' || res[i] == '/'){
			int num1, pos1, pos2, size1, size2;
			for (int j = i - 1;; j--){
				if (res[j] == '+' || res[j] == '-' || res[j] == '*' || res[j] == '/'){
					if (j != 0){
						size1 = res.substr(j + 1, i - j - 1).size();
						num1 = changei(res.substr(j + 1, i - j - 1));
					}
					else{
						pos1 = j;
						size1 = i;
						num1 = changei(res.substr(0, i));
					}
					break;
				}
				if (j == 0){
					pos1 = j;
					size1 = res.substr(0, i).size();
					num1 = changei(res.substr(0, i));
					break;
				}
				pos1 = j;
			}
			for (int j = i + 1;; j++){
				if (j != i + 1){
					if (res[j] == '+' || res[j] == '-' || res[j] == '*' || res[j] == '/'){
						if (res[i] == '*')num1 *= changei(res.substr(i + 1, j - (i + 1)));
						else num1 /= changei(res.substr(i + 1, j - (i + 1)));
						size2 = changes(num1).size();
						break;
					}
				}
				if (j == res.size() - 1){
					pos2 = j;
					if (res[i] == '*'){
						num1 *= changei(res.substr(i + 1, j - (i + 1) + 1));
					}
					else num1 /= changei(res.substr(i + 1, j - (i + 1) + 1));
					size2 = changes(num1).size();
					break;
				}
				pos2 = j;
			}
			if (pos2 != res.size() - 1){
				res = res.substr(0, pos1) + changes(num1)
					+ res.substr(pos2 + 1, res.size() - 1 - pos2);
			}
			else{
				res = res.substr(0, pos1) + changes(num1);
			}
			i = i - size1 + size2 - 1;
		}
	}

	//cout << "!!" << res << endl;

	REP(i, res.size()){
		if (res[i] == '+' || res[i] == '-'){
			if (i == 0)continue;
			int num1, pos1, pos2, size1, size2;
			for (int j = i - 1;; j--){
				if (res[j] == '+' || res[j] == '-'){
					if (j != 0)num1 = changei(res.substr(j + 1, i - j - 1));
					else {
						pos1 = j;
						size1 = res.substr(j, i - j).size();
						num1 = changei(res.substr(j, i - j));
					}
					break;
				}
				if (j == 0){
					pos1 = j;
					size1 = res.substr(0, i).size();
					num1 = changei(res.substr(0, i));
					break;
				}
				pos1 = j;
			}
			for (int j = i + 1;; j++){
				if (j != i + 1){
					if (res[j] == '+' || res[j] == '-'){
						if (res[i] == '+')num1 += changei(res.substr(i + 1, j - (i + 1)));
						else num1 -= changei(res.substr(i + 1, j - (i + 1)));
						size2 = changes(num1).size();
						break;
					}
				}
				if (j == res.size() - 1){
					pos2 = j;
					if (res[i] == '+')num1 += changei(res.substr(i + 1, j - (i + 1) + 1));
					else num1 -= changei(res.substr(i + 1, j - (i + 1) + 1));
					size2 = changes(num1).size();
					break;
				}
				pos2 = j;
			}
			if (pos2 != res.size() - 1){
				res = res.substr(0, pos1) + changes(num1)
					+ res.substr(pos2 + 1, res.size() - 1 - pos2);
			}
			else{
				res = res.substr(0, pos1) + changes(num1);
			}
			i = i - size1 + size2 - 1;
		}
		//cout << t << endl;
	}
	return res;
}

string solve(string t){
	string res = t;
	REP(i, res.size()){
		//cout << "!!" << i  << endl;
		//cout << res << endl;
		int pos1, pos2, size;
		if (res[i] == ')'){
			pos2 = i;
			for (int j = i; j >= 0; j--){
				if (res[j] == '('){
					pos1 = j;
					//cout << res.substr(pos1 + 1, pos2 - pos1 - 1) << endl;
					string buf = s_calc(res.substr(pos1 + 1, pos2 - pos1 - 1));
					size = buf.size();
					if (pos2 == res.size() - 1)res = res.substr(0, pos1) + buf;
					else res = res.substr(0, pos1) + buf + res.substr(pos2 + 1, res.size() - pos2 - 1);
					break;
				}
			}
			i = pos1 + size - 1;
			//cout << res << endl;
			//cout << "!" << i << endl;
		}
	}
	//cout << res << endl;
	return res;
}

int main(){
	cin >> n;
	REP(i, n){
		cin >> s;
		s.pop_back();
		cout << s_calc(solve(s)) << endl;
	}
	return 0;
}

C++: #include <iostream>
#include <string>
#include <algorithm>
#include <math.h>
#include <vector>
#include <set>
#include <stack>

using namespace std;
typedef long long LL;
static const double EPS = 1e-9;

#define FOR(i,k,n) for (int i=(k); i<(int)(n); ++i)
#define REP(i,n) FOR(i,0,n) 

int cal(){
  stack<int> st;
  int ope=0;
  int num;
  while(true){
    char c = getchar();
    if(c == ')' ) break;
    if(c == '=' ){
      getchar();
      break;
    }
    if(c == '(' || ('0'<=c && c<= '9') ) {
      if(c == '(') num = cal();
      else num = (c - '0');
      if(ope==0){
        st.push(num);
      }else if(ope == 1){
        st.push(-num);
        ope = 0;
      }else if(ope == 2){
        int tmp = st.top();
        st.pop();
        st.push(tmp * num);
        ope = 0;
      }else if(ope == 3){
        int tmp = st.top();
        st.pop();
        st.push(tmp / num);
        ope = 0;
      }
    }
    if(c == '+') ope = 0;
    if(c == '-') ope = 1;
    if(c == '*') ope = 2;
    if(c == '/') ope = 3;
  }
  int sum=0;
  while(!st.empty()){
    sum += st.top();
    st.pop();
  }
  return sum;
}

int main(void){  
  int n;
  cin >> n;
  getchar();
  REP(i,n)
    cout << cal() << endl;
  return 0;
}

C++: #include <iostream>
#include <string>
#include <algorithm>
#include <cctype>
#include <cstdlib>
using namespace std;

string query;
const char *p;

int exprs();

int factor() {
  char *e;
  int ret;

  if(*p == '(') {
    p ++;
    ret = exprs();
    p ++;
    return ret;
  }
  
  ret = strtol(p, &e, 10);
  // cout << "factor: " << ret << endl;
  p = e;
  //cout << *p << endl;
  
  return ret;
}

int term() {
  int ret = factor();

  for(;;) {
    if(*p == '*') {
      p++;
      ret *= factor();
    } else if(*p == '/') {
      p++;
      ret /= factor();
    } else {
      break;
    }
  }
  
  return ret;
}

int exprs() {
  
  int ret = term();
  for(;;) {
    if(*p == '+') {
      p ++;
      ret += term();
    } else if(*p == '-') {
      p ++;
      ret -= term();
    } else {
      break;
    }
  }

  return ret;
}

int main() {
  int n;
  
  cin >> n; cin.ignore();
  for(int i=0; i<n; i++) {
    getline(cin, query);
    query = query.substr(0, query.size()-1);
    p = query.c_str();
    cout << exprs() << endl;
  }
  
  return 0;
}