请问double型后面接%lf还是%f还是两种都可以
------
这话问得就不严谨,在scanf和printf中,格式化字符串是不一样的。
在 printf 中
float和double 对应的转换格式有 a, A, e, E, f, F, g, G(注意,大小写的输出是不一样的。但float和double的转化格式一样)
对以上格式,忽略l(小写的L)长度修改符。
加上L长度修改符,则以上格式对应 long double。
在 scanf 中
float 对应的转换格式有 a, A, e, E, f, F, g, G(注意,大小写的输入是一样的)
加上l(小写的L)长度修改符,则以上格式对应 double。。
加上L长度修改符,则以上格式对应 long double。
为了加深你的印象,详细说一下差别:
a. printf中,小写f 和 大写F 不同;
scanf中,小写f 和 大写F 相同。
b. scanf中%f对应float,%lf对应double;
printf中因为float会自动提升类型到double,所以只需要%f就行了,但因为好多马虎儿以为double也应该用%lf,所以后来C标准为了照顾这些人,规定double用%lf也不算错,此时忽略掉l修饰。