三夏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日

悬赏问题

  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目
  • ¥15 利用pthon计算薄膜结构的光导纳
  • ¥15 海康hlss视频流怎么播放
  • ¥15 Paddleocr:out of memory error on GPU