%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會轉換成指數形式。