问个C语言题目

void main() { short i=-4; printf("\ni:dec=%d,oct=%o,hex=%x,unsigned=%u\n",i,i,i,i); }
问输出结果是多少
我的答案是: i:dec=-4,oct=-4,hex=-4,unsigned=4
在VC++6.0上测试结果是:dec=-4,oct=37777777774,hex=fffffffc,unsigned=4294967292
书上的答案是:dec=-4,oct=177774,hex=fffcunsigned=65532
极度困惑中,求高手解答