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 <map>
#include <set>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <cstdio>
#include <string>
#include <vector>
#include <complex>
#include <cstdlib>
#include <cstring>
#include <numeric>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <functional>

#define mp       make_pair
#define pb       push_back
#define all(x)   (x).begin(),(x).end()
#define rep(i,n) for(int i=0;i<(n);i++)
#define repi(i,a,b) for(int i = (a); i < (b); i++)

using namespace std;

typedef    long long          ll;
typedef    unsigned long long ull;
typedef    vector<bool>       vb;
typedef    vector<int>        vi;
typedef    vector<vb>         vvb;
typedef    vector<vi>         vvi;
typedef    pair<int,int>      pii;

const int INF=1<<29;
const double EPS=1e-9;

const int dx[]={1,0,-1,0},dy[]={0,-1,0,1};

typedef string::const_iterator State;
class ParseError {};

int expression(State &begin);// 四則演算の式をパースして、その評価結果を返す。
int term(State &begin);// 乗算除算の式をパースして、その評価結果を返す。
int factor(State &begin);// 括弧か数をパースして、その評価結果を返す。
int number(State &begin);//数字の列をパースして、その数を返す



//数字の列をパースして、その数を返す
int number(State &begin){
	int ret =0;
	while(isdigit(*begin)){
		ret *=10;
		ret += *begin-'0';
		begin++;
	}
	return ret;
}


// 乗算除算の式をパースして、その評価結果を返す。
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;
}
// 括弧か数をパースして、その評価結果を返す。
int factor(State &begin){
	int ret = 0;
	if(*begin=='('){
		begin++;//'('を飛ばす
		ret =expression(begin);
		begin++;//')'を飛ばす
	}else{
		return number(begin);
	}
	return ret;
}


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);
		cout <<ans<<endl;
	}
	return 0;
}

C++: #include <iostream>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <time.h>
#include <cctype>
 
#define FOR(i,a,b) for(int i=(a);i<(b);i++)
#define FFOR(i,a,b) for(int i=(a);i<=(b);i++)
#define REP(i,b) FOR(i,0,b)
#define RREP(i,b) FFOR(i,1,b)
#define PB push_back
#define F first
#define S second
#define BE(c) c.begin(),c.end()
using namespace std;
typedef long long LL;
typedef LL ut;
typedef long double ld;
typedef pair<ut,ut> pr;
typedef vector<pr> Vpr;
typedef vector<ut> VI;
typedef pair<ut,pr> ppr;
typedef priority_queue<pr,Vpr, greater<pr> > PQ;
const int SIZE=1e+5+10;
const ut INF=1<<30;
const ld eps=1e-6;
const LL mod=1e+9 + 7;

typedef string::const_iterator SC;

int factor(SC&);

// ??°????????????
int number(SC& begin){
  int res = 0;

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

  return res;
}

// ??????
int term(SC& begin){
  int res = factor(begin);

  while(1){
    if(*begin == '*'){
      begin++;
      res *= factor(begin);
    }
    else if(*begin == '/'){
      begin++;
      res /= factor(begin);
    }
    else{
      break;
    }
  }
  return res;
}

// ????????????
int expression(SC& begin){
  int res = term(begin);

  while(1){
    if(*begin == '+'){
      begin++;
      res += term(begin);
    }
    else if(*begin == '-'){
      begin++;
      res -= term(begin);
    }
    else{
      break;
    }
  }
  return res;
}

// ??¬??§?????°????????????
int factor(SC& begin){
  if (*begin == '('){
    begin++;
    int res = expression(begin);
    begin++;
  }
  else{
    return number(begin);
  }
}

int main() {
	int n;
	while(cin >> n && n){
		string s;
		REP(i,n){
			cin >> s;
			SC begin = s.begin();
			cout << expression(begin) << endl;
		}
	}
	return 0;
}

C++: #include <iostream>

using namespace std;

int exp(char a[]);
int term(char a[]);
int factor(char a[]);
int p;

int exp(char a[])
{
  int x = term(a);
  while(a[p] == '+' || a[p] == '-'){
    if(a[p] == '+'){
      p++;
      x += term(a);
    } else {
      p++;
      x -= term(a);
    }
  }

  return x;
}

int term(char a[])
{
  int x = factor(a);
  while(a[p] == '*' || a[p] == '/'){
    if(a[p] == '*'){
      p++;
      x *= factor(a);
    } else {
      p++;
      x /= factor(a);
    }
  }

  return x;
}

int factor(char a[])
{
  int x;
  if(a[p] == '('){
    p++;
    x = exp(a);
    if(a[p] == ')'){
      p++;
    }
  } else {
    x = (int)(a[p]-'0');
    p++;
  }

  return x;
}

int main()
{
  int n;
  char a[101];

  while(cin>>n && n){
    while(n--){
      scanf("%s", a);
      p = 0;
      cout << exp(a) << endl;
    }
  }

  return 0;
}