>>71
ごめんおかしくなかった。

詳細としては
jはunsigned int型で、
jに代入するとき
j = (unsigned)i;
ってするとiをいったんint型に変換してそれからunsigned intに変換する。
だからfffff85になる。
j = (unsigned short)i;
ってすると、iは(unsigned short)型に変換されて、unsigned int に変換される。
unsigned同士だから上位が勝手にfで埋まることがないので、ff85になる。