m0_56257585
Sauron7i
2021-06-05 19:00
采纳率: 100%
浏览 42

各位大佬帮忙解释一下为啥%c输出是这样

 

  • 点赞
  • 收藏

4条回答 默认 最新

  • technologist_41
    已采纳

    365转成16进制是16d,但是char只支持两个十六进制数,最高位的1就会被阉割掉,
    对照ascii码表 结果就是 m,后面的同理

    298转成16进制是12A,去掉最高位1,2A,是*

    点赞 1 评论
  • technologist_45
    CSDN专家-林老师 2021-06-05 19:04

    因为你的占位符和数据类型没有对上啊,%c是字符型数据的占位符。而你的ch1和ch2都是int类型的。

    正常情况下,ASCII可显示字符在33到126之间,而超过256的数字,因为char只有8位,所以你的int就会被截断,只保留后面8个2进制位,即365的二进制101101101就会变成(01101101),即109,相当于365-256,同样的298一样,会变成42。109和42在ASCII码表上对应的字符就是m和*。

    点赞 评论
  • apull
    浪客 2021-06-05 19:09

    char类型1个字节,共8位

    int转char丢掉高位

     

     

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-06-07 15:14

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    点赞 评论

相关推荐