どうして
char c = (char)i;
じゃなくて
i=(char)i;
なんだろ。
int型に入れたらその後の比較でsizeof(int)単位で比較しなきゃいけなくなるでしょ?

char,charの比較ならcmpblで1バイトの比較になる。