c语言scanf("%d"), scanf("%C"), scanf("%lf")意思一样么

如题所述

不一样的,这么都是格式字符,意义如下:
格式字符 意 义
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀0)
x,X 以十六进制形式输出无符号整数(不输出前缀Ox)
u 以十进制形式输出无符号整数
f 以小数形式输出单、双精度实数
e,E 以指数形式输出单、双精度实数
g,G 以%f或%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
前面加个%,你自己对照下吧
长度:长度格式符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。你这个“%lf”,是在定义输入的类型为double(双精度)是用的,不明白,你可以测试下:
#include<stdio.h>
void main()
{ double i;
scanf("%lf",&i);
printf("%f\n",i);
}

#include<stdio.h>
void main()
{ double i;
scanf("%f",&i);
printf("%f\n",i);
}
我这里用了2个编译器分别测试了下,一个如果定义double行,输入的时候必须要用%lf,一个就不用了,用%f也行,但是精度还是有区别的,综合以上,如果定义double型数据,输入最好是用"%lf" .
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-12

    不一样。scanf函数的功能为从标准输入流中读取数据,原型如下:

int scanf(const char *format,...);

scanf根据字符串format,从stdin流中读取数据,读取何种类型的数据,将其以何种形式存储在内存中,由format中的格式符指定。

    格式符,即%和它后面的几个字符。用于scanf的格式符有以下几种:

    c 读单字符

    d 读十进制整数

    i 读十进制、八进制、十六进制整数

    e 读浮点数

    f 读浮点数

    g 读浮点数

    o 读八进制数

    s 读字符串

    x 读十六进制数

    p 读指针值

    u 读无符号十进制整数

    [ ] 扫描字符集合

所以%d指示scanf读取一个整数值,%c指示读取一个字符,%lf指示读取一个双精度值。

第2个回答  2011-12-01
不一样,分别输入 int型 4字节 char型1字节 lf好像是double型!!!
第3个回答  2011-12-01
不一样
%d用于输出整型
%c用于输出字符
%1f输出浮点型,小数点后保留1位数字
相似回答