我尝试将unsigned long int转换为char
但我有一些错误

int main(void)
{
    unsigned char pdest[4];
    unsigned long l=0xFFFFFFFF;
    pdest[0] = l         & 0xFF;
    pdest[1] = (l >>  8) & 0xFF;
    pdest[2] = (l >> 16) & 0xFF;
    pdest[3] = (l >> 24) & 0xFF;

    unsigned long int l1=0;
    l1 |= (pdest[0]);
    l1 |= (pdest[1] << 8);
    l1 |= (pdest[2] << 16);
    l1 |= (pdest[3] << 24);

    printf ("%lu",l1);
}


和输出是

18446744073709551615


不是4294967295?

如何正确执行?

最佳答案

读这个:
https://en.wikipedia.org/wiki/C_data_types


  ...长无符号整数类型。至少可以包含[0,
  4,294,967,295]范围;

10-04 21:58