我正在做一个作业,要求我编写一个函数,该函数需要一个长值并在 C 中以相反的顺序返回其字节,给出了函数的原型,即
long swapLong(long x)
我的代码如下所示:
long swapLong(long in)
{
long out;
char *inp = (char *) &in ;
char *outp = (char *) &out;
int i=0;
for (i=0; i<8 ;i++)
{
outp[i] = inp[7-i];
}
return out;
}
如果函数的输入是 0x1122334455667788
它应该返回 0x8877665544332211
但是,当我用
long test2 = 0x1122334455667788;
long result2= swapLong(test2);
printf("0x %lx\n", test2);
printf("0x %lx\n", result2);
结果是 0x44332211
似乎该功能只交换前半部分哦输入,我不知道后半部分会发生什么
我编写了另一个名为“ int swapInt( int x) ”的函数,使用与 swapLong() 类似的想法并且效果很好....所以我不知道我对 swapLong() 做错了什么