溢出问题short int 16位, 能表示的最大正数为0x7fff=327670x7fff+3=0x8002然后就负数了
第一个为正数是因为你的结果是以%d输出,就是一个整型所以没有溢出,是一个正数。短整型输出是以%hd输出第二个是你定义的z为short int类型,所以在进行x+y的时候就已经发生溢出了,自然就是负的了(原因就是数据在计算机内部是以补码的形式存储,x往前移3个单位就是第二个答案的负数)