C语言,double类型的变量使用scanf()函数赋值后再使用printf()输出,为什么和输入的值不同?

2020-06-19 科技 151阅读
  1. c语言中double输入输出,都用 %lf 进行格式化,是否写成了 %f, 这个是float类型。

#include 
int main()
{
    double d = 0;
    printf("intput a double:");
    scanf("%lf", &d);
    printf("d = %lf\n", d);
    return 0;
}

2. 字符定义如下

字符 对应数据类型 含义

d / i int 接受整数值并将它表示为有符号的十进制整数,i是老式写法

o unsigned int 无符号8进制整数(不输出前缀0)

u unsigned int 无符号10进制整数

x / X unsigned int 无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)

f(lf) float(double) 单精度浮点数用f,双精度浮点数用lf(尤其scanf不能混用)

e / E double 科学计数法表示的数,此处"e"的大小写代表在输出时用的“e”的大小写

g / G double 使用以上两种中最短的形式,大小写的使用同%e和%E

c char 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符

s / S char * / wchar_t * 字符串。输出字符串中的字符直至字符串中的空字符(字符串以'\0‘结尾,这个'\0'即空字符)

p void * 以16进制形式输出指针

n int * 到此字符之前为止,一共输出的字符个数,不输出文本

% 无输入 不进行转换,输出字符‘%’(百分号)本身

m 无 打印errno值对应的出错内容,(例: printf("%m\n"); )

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com