c语言处理大小端有关问题
c语言处理大小端问题有这么一段程序#include stdio.h#include stdint.hstruct abc {uint16_t i}int
c语言处理大小端问题
有这么一段程序
#include <stdio.h>
#include <stdint.h>
struct abc {
uint16_t i;
};
int main()
{
struct abc info;
scanf("%x",&(info.i));
printf("%x\n",info.i);
}
在pc上运行正常,输入0x01显示0x01
但在powerpc上运行,输入0x01,显示0x0
poerpc上都是大端模式,应该怎么解决呢
[解决办法]怎么这么多人误导,这个显然跟大小端有关啊,不过最根本原因是越界了
uint16_t是2字节,%d是4字节,小端把01填入i,大端把0填入i
[解决办法]不看回帖么?如果不改结构就用%hx,或者把uint16_t修改为uint32_t,总之scanf参数要和数据类型匹配