菜鸟碰到一个有关问题:看看一个输出,为何如此

初学者碰到一个问题:看看一个输出,为何如此?#includestdio.hvoidmain(){unsignedshorti-1shortj-1pr

初学者碰到一个问题:看看一个输出,为何如此?
#include   <stdio.h>
void   main()
{
unsigned   short   i   =   -1;
short   j   =   -1;
printf( "i=%x,j=%x\n ",i,j);

}


输出:
i=ffff,j=ffffffff
Press   any   key   to   continue




[解决办法]
-1 16bit 补码 11111111 11111111
-1 32bit 补码 11111111 11111111 11111111 1111111
机器内数值以补码存储