PTA 无符号整数的内部结构 - C 指针及引用

无符号整数v由4个字节构成。请编程完成下述任务:

  1. 从键盘读取一个整数,存入unsinged int v;

  1. 以16进制格式打印v的值;

  1. 取v的地址,并强制类型转换成unsigned char*,然后通过这个地址/指针依次打印构成v的第0,第1,第2,第3个字节的16进制值。

输入格式:

正整数v

输出格式:

请参考样例

输入样例:

12345678

输出样例:

bc614e
4e 61 bc 0

说明:输出的第1行为无符号整数v的16进制值,第2行为构成v的四个字节各自的16进制值。

请通过这个例子的输出结果思考无符号整数v内部的存储结构,权重高的字节存储在高地址还是低地址?

代码如下:

#include<stdio.h>
int main()
{
    unsigned int v;
    int i;
    scanf("%d",&v);
    printf("%x\n",v);
    unsigned char *p=(unsigned char*)&v;
    for(i=0;i<sizeof(v);++i)
    {
        if(i<3)
        {
            if(sizeof(p[i])==1)
                printf("%.1x ",p[i]);
            else
                printf("%.2x ",p[i]);
        }
        else
        {
            int t=sizeof(p[i]);
            if(t==1)
               printf("%.1x",p[i]);
            else
                printf("%.2x",p[i]);
        }
     }
    return 0;
}
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值