c语言中double输入输出,都用 %lf 进行格式化,是否写成了 %f, 这个是float类型。include <stdio.h>int main(){ double d = 0; printf("intput a double:"); scanf("%lf", &d); printf("d = %lf\n", d); return 0;} 2. 字符定义如下 字符对应数据类型含义 d / ...
答:printf的%f说明符的确既可以输出float型又可以输出double型。 根据"默认参数提升"规则(在printf这样的函数的可变参数列表中 ,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到双精度数。 对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升。(通过指针)向f...
float和double是两种不同的浮点数类型。float是单精度浮点数,double是双精度浮点数,通常占用更多的内存空间,即double比float多4个字节。%f用于格式化float类型数据的输入和输出,而%lf表示long float,通常对应于double类型。当使用scanf读取float类型数据时,系统按照4字节的长度读取数据,并存储在一个float...
``参数默认晋级" 规则适用于在可变参数中的可变动部分: char 和 short int 晋级到 int, float 晋级到 double。同样的晋级也适用于在作用域中没有原型说明的函数调用, 即所谓的 ``旧风格" 函数调用, 所以 printf 的 %f 格式总是得到 double。类似的, %c 总是得到 int, %hd 也是。
double精度更高,是指它存储的小数位数更多,但是输出默认都是6位小数,如果你想输出更多小数,可以自己控制,比如 “%.10lf” 就输出10位小数,望采纳
看看这里:c-faq.com / stdio / scanfvsprintf.html 建议就是:scanf()对double用lf,printf()对double只用f。具体上面的说明,英文的,仔细看看。不要听别人乱讲。
可以用%lf 应该说double类型的数据用%lf scanf当中若是对双精度的变量赋值是必须是%后跟lf,而printf当中可以用%f也可以用%lf没有限制
【解析】会的因为1.2默认是double类型的如果写成1.2f那就是float类型的把1.2转换为float肯定有警告 结果一 题目 C语言关于实型数float与double的区别具体说说为什么 #include void main() {float a; a=1.2;printf("%f",a);}会出警告? 答案 会的因为1.2默认是double类型的如果写成1.2f那就是float类型的把1.2转...
准确来讲,是scanf里lf要接收double*,f要用接收float*,而printf里无论写lf还是f都是当成double。明晰...
因为a是double型数据,用%d输出的时候,输出的都是0,应该用 %lf 输出 而后面的用了强制类型转换,取整数部分