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

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

img

img

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

  • 写回答

3条回答 默认 最新

  • 日晨难再 优质创作者: 嵌入式与硬件开发技术领域 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日