测试环境: XP VC6.0
测试程序
#include "stdio.h"
void main(void)
{
short int i;
long L = 6324232L;
i = L;
printf("i=%d,L=%ld\n",i,L);
while(1);
}
测试结果:i=-32760,L= 6324232
变量在内存中的表示:
L 0x00608008 0000 0000 0110 0000 1000 0000 0000 1000
i 0x8008 1000 0000 0000 1000
结论:
长数据赋值给短变量时仅仅将长数据的低字节位送到短变量中,这样有可能导致数据变化。