brook-lv 2015-11-05 03:20 采纳率: 0%
浏览 1644

C语言中的指针转换问题

代码如下

 # include<stdio.h>

int main()
{
    unsigned int a = 0xfffffff7 ;
    unsigned char i = (unsigned char)a ;
    char *b = (char *)&a ;//让b指向a的地址

    printf ("%x, %x\n", i, *b) ;//不懂:*b应该是char类型的,为什么结果会是4个字节?
    printf ("%08x, %08x\n", i, *b) ;

    return 0 ;
}
/*
result:
f7, fffffff7
000000f7, fffffff7
*/

printf ("%x, %x\n", i, *b) ;//*b应该是char类型的,为什么结果是fffffff7,是4个字节?

  • 写回答

5条回答 默认 最新

  • wunaidepao 2015-11-05 03:26
    关注

    你是强制它输出4个字节,FF是填充上去的,你设定了08

    评论

报告相同问题?

悬赏问题

  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记