weixin_43249053 2018-09-26 14:27 采纳率: 100%
浏览 849
已采纳

int型赋给char型,按%u和%d输出结果的问题

图片说明
我看书上说,多字节赋值给低字节的,只将其低字节原封不地送到该变量。
可如图,我定义的char c,按%u输出的时候,变成4字节的了。

问题1,按%u和%d输出时,实质是转换成了无符号都int和有符号的int输出的,
所以我定义的char c,输出时候由1字节的char先变成4字节的int型,再按是否有符号输出。我这样说没错吧?
图片说明

问题2,虽然定义了 unsigned char c,当128赋值给c后,c的值在计算机中以1000 0000储存。为,而以%d输出时是正值,为什么?

  • 写回答

2条回答

  • threenewbee 2018-09-26 15:08
    关注

    第一个问题,注意,是多字节变成1个字节,而不是反过来,代码如下:

     #include <stdio.h>
    
    int main () {
        int a = 0x12 * 256 + 0x34;
        printf("0x%x", (char)a);
        return 0;
    }
    

    结果

    0x34

    第二个,需要强制转换成有符号数

    #include <stdio.h>
    
    int main () {
        unsigned char a = 128;
        printf("%d", (char)a);
        return 0;
    }
    

    结果
    -128

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题