kind は列挙体使うべきだな。
value と operand は共用体を使うのが常套手段か。
(kei[i].kind==2) && が並んでるのも気になる。
先に if(kei[i].kind==2) 書いてその中で演算子をチェックしようぜ。

まあそれはいいとして、
結果は i + 1 の方に入れないとダメなんじゃないのかな。
雰囲気的に。