今天同学问的一个问题 char a=0,b=0; int *p = (int*)&b; *p = 258; 在win下结果为,a=0,b=2,溢出在linux下结果为,a=1,b=2 原因: win的变量声明地址不连续,linux变量声明的地址连续。258的二进制是0x0001 0000 0010,而char类型只有一个字节,即取低8位值为2,而高八位值为1