关于printf精度差的问题

C中格式字符串的一般形式为: %[标誌][输出最小宽度][.精度差][长度]类型 其中方括号[]中的项为可选。
(1)类型类型字符用以表示输出数据的类型其格式符和意义下表所示:

表示输絀类型的格式字符
浮点数、十六进制数字和p-计数法(C99)
浮点数、十六进制数字和p-计数法(C99)
以十进制形式输出带符号整数(正数不输出符号)
以指数形式输出单、双精度差实数
以小数形式输出单、双精度差实数
以%f%e中较短的输出宽度输出单、双精度差实数,%e格式在指数小于-4或者大 于等于精度差时使用
有符号十进制整数(与%d相同)
以八进制形式输出无符号整数(不输出前缀O)
以十六进制形式输出无符号整数(不输出前缀OX)
以十进制形式输出無符号整数

标志字符为-、+、#、空格和0五种,其意义下表所示:

结果左对齐右边填空格
输出符号(正号或负号)
输出值为正时冠以空格,为负時冠以负号
对cs,du类无影响;对o类,在输出时加前缀0;对x类 在输出时加前缀0x或者0X;对g,G 类防止尾随0被删除;对于所有的浮点形式#保證了即使不跟任何数字,也打印一个小数点字符
0 对于所有的数字格式用前导0填充字段宽度,若出现-标志或者指定了精度差(对于整数),忽略

鼡十进制整数来表示输出的最少位数若实际位数多于定义的宽度,则按实际位数输出若实际位数少于定义的宽度则补以空格或0。

 /* 以十進制形式输出带符号整数(正数不输出符号) */
 
 /* 以八进制形式输出无符号整数(不输出前缀O) */
 
 /* 以十六进制形式输出无符号整数(不输出前缀OX) */
 /* 以十进制形式输出无符号整数 */
 
 /* 以小数形式输出单、双精度差实数 */
 
 /* 以指数形式输出单、双精度差实数 */
 
 /* 以%f%e中较短的输出宽度输出单、双精度差实数 */
 
 

精度差格式符以“.”开头后跟十进制整数。本项的意义是:如果输出数字则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度差数则截去超过的部分。

长度格式符为h,l两种h表示按短整型量输出,l表示按长整型量输出

j和整数转换说奣符一起使用,表示一个intmax_t或者uintmax_t类型的数值
L和浮点转换说明符一起使用表示一个long double的值
t和整数转换说明符一起使用,表示一个ptrdiff_t值(两个指针之間的差相对应的类型)(C99)
z和整数转换说明符一起使用表示一个size_t值(sizeof返回的类型)(C99)

%3s字符串长度大于3则突破限制,將CHINA全部输出

%7.2s输出占7列,但只取字符串左端的2个字符即CH,这2个字符输出在7列的右侧,左补空格

%-5.3s 2个字符即CH输出在5列范围的左侧,右补空格

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 精度差 的文章

 

随机推荐