main()
{
unsigned char a[4]= {0x12, 0x34, 0x56, 0x78};
unsigned long i, j;
i = (a[0] << 24) + (a[1] << 16) + (a[2] << 8) + a[3];
j = a[0] * 0x1000000 + a[1] * 0x10000 + a[2] * 0x100 + a[3];
return 0;
}
我以为 i = 0x12345678, 实际上 i = 0x00005678, 查了半天错,最后改成了第二个式子才得一通过
实在是想不明白,为什么i的值只有低16位
谢谢,我已经想明白了,这是C语言的强制数据类型转换,常数默认的是类型是int型
一周热门 更多>