C语言格式化输入输出

时间:2022-01-07 16:52:07

%i和%d之间的区别

作为匹配整数的转换说明,printf格式串中两者并没有区别,但是在scanf格式串中%d只能匹配十位制整数,而%i可以匹配八进制(前缀为0,如086)、十进制或十六进制(前缀0x或0X,如0x55)。如果在输入过程中意外的加上一个0,会产生意想不到的错误,因此尽量避免使用%i。

%d %e %f %g区别

示例代码

#include <stdio.h>
 
int main(void)
{
    printf("%-6d,%10d\n", 86, 1040);
    printf("%12.6e\n", 30.253);
    printf("%.4f\n", 83.162);
    printf("%-6.2g\n", .0000009979);
    printf("%6.2g\n", 9979.79);
    printf("%6.3g\n", 9979.79);
    printf("%6.4g\n", 9979.79);
    printf("%6.5g\n", 9979.79);
    printf("%10.4g\n", 9979.79);
}

程序输出

86    ,      1040
3.025300e+01
83.1620
1e-06 
 1e+04
9.98e+03
  9980
9979.8
      9980

d —— 表示十进制形式整数,添加负号表示左对齐,默认为右对齐,6和10表示显示的数字个数。

e —— 表示指数(科学计数法)形式的浮点数。12.6表示12个有效数字(包括符号)和精确到小数点后6位。

f ——  表示“定点十进制”形式的浮点数,没有指数。同e

g —— 表示指数形式或定点十进制形式的浮点数,适合无法预知数的大小或者数值变化大的情况下使用。大小适中时g会采用定点十进制,如果显示非常大或非常小的数,g会转换成指数形式。