%d是有符号的输出,改为%u无符号就ok了i和y内存中的数据是相同的,unsignedint和int的区别在于,int把第一位当符号位,而unsignedint不是。i=-5,y=2147483653(0x80000005)