三夏761 2022-10-18 18:29 采纳率: 100%
浏览 25
已结题

c语言scanf函数char类型格式转换成%d的奇怪现象

以下代码输入

img


结果是

img


将a和b交换位置

img


结果是

img


请教各位大帅比这是为啥呢?

  • 写回答

2条回答 默认 最新

  • 於黾 2022-10-18 18:55
    关注

    char只占一个字节,而你用%d对它进行赋值,就会将连续4个字节赋值给这个地址
    如果你a在前,b在后,那么假如a的地址是n,b的地址就是n+1
    当你给a赋值,a的值是1,同时a之前的3个字节变成0,你给b赋值,b的值变成1,同时b之前3个字节变成0,这里就包括a,所以a变成0
    如果你先定义b后定义a,那么a的地址比b的大,先给a赋值后给b赋值就不会覆盖a的值
    -=-=-=-=
    你想象一下手里有许多宽刷子,蘸了不同颜色的涂料,你准备把键盘的每个键涂上不同的颜色
    问题是这个刷子有4个键那么宽
    你先给字母s刷颜色的时候,d,f,g一起被你刷了颜色,你再给字母a刷颜色的时候,s又被你重新刷了
    而你先刷a再刷s就不会有问题

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

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月18日

悬赏问题

  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan