%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会转换成指数形式。