有关字符输出问题 const char* str="\x56\x78\x12\x34"; printf("%x",*(int*)str);

踩沙滩 2014-09-20 12:26:47
const char* str="\x56\x78\x12\x34";
printf("%x",*(int*)str);

输出结果:34127856
为啥呢?
...全文
2315 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
penggeninhao 2014-10-06
  • 打赏
  • 举报
回复
char*p2="abcdef";为什么这个输出是abcdef呢?菜鸟求指教。。。
踩沙滩 2014-09-20
  • 打赏
  • 举报
回复
都那么晚睡。。。。谢谢啦
brookmill 2014-09-20
  • 打赏
  • 举报
回复
一般的32位和64位编译器,int都是4个字节。某些古老的编译器可能是2字节。
const char* str="\x56\x78\x12\x34";  // str指向一块内存,它的前4个字节依次是0x56, 0x78, 0x12, 0x34
printf("%x",*(int*)str);  // 把str指向的内存的4个字节按照int格式输出。小端系统会把字节顺序反过来,输出0x34127856;大端系统保持字节顺序,输出0x56781234。
brookmill 2014-09-20
  • 打赏
  • 举报
回复
一个类似的例子: char str[] = { 0x56, 0x78, 0x12, 0x34 }; printf("%x",*(int*)str); // 小端系统输出0x34127856,大端系统输出0x56781234

69,380

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧