printf and scanf format codes

本文详细介绍了C语言中printf和scanf函数的使用方法,包括格式字符串中的关键字母所对应的变量类型和格式,以及如何通过修饰符调整输出样式。

printf and scanf key letters

The first argument to printf() or scanf() is a format string. In printf(), most things are output directly except for format codes beginning with a '%'. Key letters show data type AND formatting.

The most important key letters are d, g (usually used as "lg"), and s.

codetypeformat
dintdecimal (base ten) number
ointoctal number (no leading '0' supplied in printf)
x or Xinthexadecimal number (no leading '0x' supplied in printf; accepted if present in scanf) (for printf, 'X' makes it use upper case for the digits ABCDEF)
ldlongdecimal number ('l' can also be applied to any of the above to change the type from 'int' to 'long')
uunsigneddecimal number
luunsigned longdecimal number
cchar [footnote]single character
schar pointerstring
ffloat [footnote]number with six digits of precision
gfloat [footnote]number with up to six digits of precision
efloat [footnote]number with up to six digits of precision, scientific notation
lfdouble [footnote]number with six digits of precision
lgdouble [footnote]number with up to six digits of precision
ledouble [footnote]number with up to six digits of precision, scientific notation

Footnote: In printf(), the rvalue type promotions are expected. Thus %c actually corresponds to a parameter of type int and %f and %g actually correspond to parameters of type double. Thus in printf() there is no difference between %f and %lf, or between %g and %lg. However, in scanf() what is passed is a pointer to the variable so no rvalue type promotions occur or are expected. Thus %f and %lf are quite different in scanf, but the same in printf.

Personally, I used to use %lg routinely for doubles in both printf and scanf, but this is out of favour these days and indeed gcc will give you a warning message for using %lg in printf. The usual procedure these days is to use %g for double in printf and %lg for double in scanf. It doesn't matter which you use for printf because the printf library function treats them as synonymous, but it's crucial to get it right for scanf.

 


printf format modifiers

Modifiers appear between the '%' and the key letter.

Example of '0':

int dollars = 2;
int cents = 3; /* $2.03 */
printf(" ?? what goes here ?? ", dollars, cents);
If format isthen output is
"$%d.%d"$2.3
"$%d.%2d"$2. 3    (one space between "." and "3")
"$%d.%02d"$2.03

In "%02d", the 0 is not part of the field width. It is a modifier character. And when you have a field width, you must write it such that it does not start with a zero (and then you can prepend a zero as a modifier character if you want that).

内容概要:本文围绕新一代传感器产品在汽车电子电气架构中的关键作用展开分析,重点探讨了智能汽车向高阶智能化演进背景下,传统传感器无法满足感知需求的问题。文章系统阐述了自动驾驶、智能座舱、电动化与网联化三大趋势对传感器技术提出的更高要求,并深入剖析了激光雷达、4D毫米波雷达和3D-ToF摄像头三类核心新型传感器的技术原理、性能优势与现存短板。激光雷达凭借高精度三维点云成为高阶智驾的“眼睛”,4D毫米波雷达通过增加高度维度提升环境感知能力,3D-ToF摄像头则在智能座舱中实现人体姿态识别与交互功能。文章还指出传感器正从单一数据采集向智能决策升级,强调车规级可靠性、多模态融合与成本控制是未来发展方向。; 适合人群:从事汽车电子、智能驾驶、传感器研发等相关领域的工程师和技术管理人员,具备一定专业背景的研发人员;; 使用场景及目标:①理解新一代传感器在智能汽车系统中的定位与技术差异;②掌握激光雷达、4D毫米波雷达、3D-ToF摄像头的核心参数、应用场景及选型依据;③为智能驾驶感知层设计、多传感器融合方案提供理论支持与技术参考; 阅读建议:建议结合实际项目需求对比各类传感器性能指标,关注其在复杂工况下的鲁棒性表现,并重视传感器与整车系统的集成适配问题,同时跟踪芯片化、固态化等技术演进趋势。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值