普通网友 2024-03-24 15:22 采纳率: 0%
浏览 27

c语言 (char )1和‘1’的区别

img

img

这两种代码为什么输出结果不同,定义变量类型和等号后面的值没有关系吗?

  • 写回答

3条回答 默认 最新

  • 日晨难再 数字IC领域优质创作者 2024-03-24 19:32
    关注

    首先要知道,char,int,long在底层本质上都是存储了一个数(二进制),char与其他两者不同的在于,它可以将一个数(ASCII)解释为字符,从而以%c的形式打印出来。
    因此在你的例子中,直接将十进制值1赋值给char后,char在底层保存的就是二进制值1。此时printf使用转换说明%d打印,表示将二进制值1解释为一个十进制数,因此直接输出1,如果你此时使用转换说明%c,则代表把二进制值1解释为一个ASCII码,输出其对应的字符,即一个不可见字符SOH。
    当你使用scanf加转换说明%c读取输入1时,1会被解释为一个字符,因此变量c保存的是其ASCII码,即二进制值00110001,因此可以当你使用转换说明%d打印时,该二进制值会被解释为一个十进制数,也就是49。

    如还有不懂可以追问,如问题解决请采纳。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月24日

悬赏问题

  • ¥15 三菱FX系列PLC串口指令
  • ¥15 cocos的js代码调用wx.createUseInfoButton问题!
  • ¥15 关于自相关函数法和周期图法实现对随机信号的功率谱估计的matlab程序运行的问题,请各位专家解答!
  • ¥15 Python程序,深度学习,有偿私
  • ¥15 扫描枪扫条形码出现问题
  • ¥35 poi合并多个word成一个新word,原word中横版没了.
  • ¥15 【火车头采集器】搜狐娱乐这种列表页网址,怎么采集?
  • ¥15 求MCSCANX 帮助
  • ¥15 机器学习训练相关模型
  • ¥15 Todesk 远程写代码 anaconda jupyter python3