这两种代码为什么输出结果不同,定义变量类型和等号后面的值没有关系吗?
3条回答 默认 最新
关注 首先要知道,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。如还有不懂可以追问,如问题解决请采纳。
解决 1无用
悬赏问题
- ¥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