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++: package practice;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayDeque;
import java.util.Queue;

public class Main {

	private static final int BIG_NUM  = 2000000000;
	private static final int MOD  = 1000000007;
	private static char[] line;


	public static void main(String[] args) {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		line = new char[120];
		String input_str;
		int length;

		try {
			int num_eq = Integer.parseInt(br.readLine());

			for(int loop = 0; loop < num_eq; loop++){

				input_str = br.readLine();

				length = 0;
				for(int i = 0; input_str.charAt(i) != '='; i++){
					line[i] = input_str.charAt(i);
					length++;
				}

				System.out.println(calc_E(0,length-1));
			}

		} catch (NumberFormatException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

	public static int calc_E(int left,int right){
		int depth = 0;
		Queue<Integer> Q = new ArrayDeque<Integer>();

		//深さ0の、プラスまたは-を探す
		for(int i = left; i <= right; ){
			if(line[i] == '(')depth++;
			else if(line[i] == ')')depth--;

			if(depth != 0){
				i++;
			}else if(line[i] != '+' && line[i] != '-'){
				i++;
			}else{
				if(line[i] == '+'){
					Q.add(i);
					i++;
				}else{ //line[i] == '-'
					Q.add(i);
					i++;
				}
			}
		}

		if(Q.isEmpty()){ //深さ0の+-がない
			return calc_T(left,right);
		}

		int tmp = calc_E(left,Q.peek()-1),tmp_right;

		if(tmp == BIG_NUM)return BIG_NUM;

		while(!Q.isEmpty()){
			int loc = Q.peek();
			Q.poll();

			if(Q.isEmpty()){
				tmp_right = calc_T(loc+1,right);
			}else{
				tmp_right = calc_T(loc+1,Q.peek()-1);
			}

			if(tmp_right == BIG_NUM){
				return BIG_NUM;
			}

			if(line[loc] == '+'){
				tmp += tmp_right;
			}else{
				tmp -= tmp_right;
			}
		}
		return tmp;
	}

	public static int calc_T(int left,int right){
		int depth = 0;
		Queue<Integer> Q = new ArrayDeque<Integer>();

		//深さ0の、*,/を探す
		for(int i = left; i <= right; ){
			if(line[i] == '(')depth++;
			else if(line[i] == ')')depth--;

			if(depth != 0){
				i++;
			}else if(line[i] != '*' && line[i] != '/'){
				i++;
			}else{
				Q.add(i);
				i++;
			}
		}

		if(Q.isEmpty()){ //深さ0の*,/がない
			return calc_F(left,right);
		}

		int tmp = calc_T(left,Q.peek()-1),tmp_right;

		if(tmp == BIG_NUM)return BIG_NUM;

		while(!Q.isEmpty()){
			int loc = Q.peek();
			Q.poll();

			if(Q.isEmpty()){
				tmp_right = calc_F(loc+1,right);
			}else{
				tmp_right = calc_F(loc+1,Q.peek()-1);
			}

			if(tmp_right == BIG_NUM){
				return BIG_NUM;
			}

			if(line[loc] == '*'){
				tmp *= tmp_right;
			}else{
				if(tmp_right == 0){
					tmp_right = 1;
					System.out.println("BUG!\n");
				}

				tmp /= tmp_right;
			}
		}
		return tmp;
	}
	public static int calc_F(int left,int right){

		if(line[left] >= '0' && line[left] <= '9'){
			return calc_NUM(left,right);

		}else if(line[left] == '-'){
			return -calc_F(left+1,right);
		}else if(line[left] == '('){

			int depth = 0;
			int close_pos = BIG_NUM;

			for(int i = left; i <= right; i++){
				if(line[i] == '(')depth++;
				else if(line[i] == ')'){
					depth--;
					if(depth == 0){
						close_pos = i;
						break;
					}
				}
			}
			if(close_pos == BIG_NUM || close_pos != right)return BIG_NUM;

			return calc_E(left+1,close_pos-1);
		}else{
			return BIG_NUM;
		}
	}
	public static int calc_NUM(int left,int right){

		int ret = 0;
		for(int i = left; i <= right; i++){
			ret = 10*ret+line[i]-'0';
		}
		return ret;
	}
}

C++: #include<bits/stdc++.h>
using namespace std;
typedef string::const_iterator State;

int expression(State &begin);

int term(State &begin);

int factor(State &begin);

int number(State &begin);

void consume(State &begin,char expected);

int main(){
  int n;
  cin>>n;
  cin.ignore();
  for(int i=0;i<n;i++){
    string s;
    getline(cin,s);

    State begin = s.begin();
    int ans=expression(begin);
    consume(begin,'=');
    cout<<ans<<endl;
  }

}


int number(State &begin){
  int ret = 0;

  while(isdigit(*begin)){
    ret *= 10;
    ret += *begin - '0';
    begin++;
  }
  return ret;
}


int factor(State &begin){
  if(*begin =='('){
    consume(begin,'(');
    int ret = expression(begin);
    consume(begin,')');
    return ret;
  }
  else{
    return number(begin);
  }
}


int term(State &begin){
  int ret = number(begin);

  for(;;){
    if(*begin =='*'){
      consume(begin,'*');
      ret *= factor(begin);
    }
    else if(*begin =='/'){
      consume(begin,'/');
      ret /= factor(begin);
    }
    else break;
  }

  return ret;
}


int expression(State &begin){
  int ret = term(begin);

  for(;;){
    if(*begin =='+'){
      consume(begin,'+');
      ret += term(begin);
    }
    else if(*begin =='-'){
      consume(begin,'-');
      ret -= term(begin);
    }
    else break;
  }
  return ret;
}



void consume(State &begin, char expected) {
  if (*begin == expected) {
    begin++;
  } else {
    cerr << "Expected '" << expected << "' but got '" << *begin << "'"
      << endl;
    cerr << "Rest string is '";
    while (*begin) {
      cerr << *begin++;
    }
    cerr << "'" << endl;
  }
}

C++: #include<bits/stdc++.h>
#define range(i,a,b) for(int i = (a); i < (b); i++)
#define rep(i,b) for(int i = 0; i < (b); i++)
#define all(a) (a).begin(), (a).end()
#define show(x)  cerr << #x << " = " << (x) << endl;
using namespace std;

typedef string::const_iterator State;
int number(State&);
int factor(State&);
int term(State&);
int expression(State&);

// ??°??????????????????????????????????????°????????????
int number(State &begin) {
    int ret = 0;

    while (isdigit(*begin)) {
        ret *= 10;
        ret += *begin - '0';
        begin++;
    }

    return ret;
}

// ??¬??§?????°???????????????????????????????????????????????????
int factor(State &begin) {
    if (*begin == '(') {
        begin++; // '('????£???°??????
        int ret = expression(begin);
        begin++; // ')'????£???°??????
        return ret;
    } else {
        return number(begin);
    }
    return -1;
}

// ?????????????????????????????????????????????????????????????????????
int term(State &begin) {
    int ret = factor(begin);

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

    return ret;
}

// ?????????????????????????????????????????????????????????????????????
int expression(State &begin) {
    int ret = term(begin);

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

    return ret;
}

//begin???expected?????????????????????begin?????????????????????
void consume(State &begin, char expected) {
    if (*begin == expected) {
        begin++;
    } else {
        cerr << "Expected '" << expected << "' but got '" << *begin << "'" << endl;
        cerr << "Rest string is '";
        while (*begin) {
            cerr << *begin++;
        }
        cerr << "'" << endl;
        //throw ParseError();
    }
}


int main(){
    int t;
    cin >> t;
    while(t--){
        string s;
        cin >> s;
        State tmp = s.begin();
        int ans = expression(tmp);
        consume(tmp, '=');
        cout << ans << endl;
    }
}