C语言格式化标识符小细节

本文探讨了在C语言中使用scanf和printf进行格式化输入输出时,数据类型与格式化标识符匹配的必要性。如果不匹配,可能会导致数据丢失或输出垃圾值,因为不同类型的变量在内存中有不同的存储区域。例如,使用%f读取浮点数并赋值给整型变量会导致数据不被正确读取,输出时找不到对应的数据,从而产生不可预测的输出。因此,确保数据类型与格式化标识符的一致性是避免错误的关键。
摘要由CSDN通过智能技术生成

scanf 和 printf 中 格式化标识符的小细节

数据类型必须和格式化标识符一一对应,不管是输入还是输出,否则会造成不可逆的结果,数据丢失(输出的是一个毫不相关的垃圾值)

为什么会丢失?

不管是读取还是输入,每一种标识符获取到的数据,它被存储的区域,都是不一样的,一种数据类型,会专门存放在一个区域
例如下面:
在这里插入图片描述
%f 和%d 存放数据的区域是相互独立的,每个输入进来的数据都有相应关联的变量和对应的地址,若是标识符类型和变量类型不同,例如第八行,使用%d 输出a的值的时候,printf 函数会去存储%d 的数据的区域找数据,而%d 没有叫做a的整形变量,所以输出的就是一个垃圾值。

而下图中,以 %f 读取数据并赋值一个int 类型的变量,%f 是用于读取浮点数类型, 而 b 是int 类型,两者冲突,所以并不会进行读取操作,相当于这个数据没有输入,%d 和 %f 的区域都没有刚刚键盘输入的数据,所以,不管是在%d 还是在 %f 的区域都没有对应的数据,所以,输出的是一个垃圾值

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值