printf() 按控制字串規定格式,向預設輸出裝置(通常是螢幕)輸出資料。
printf("控制字串", 輸出項列表);
% [標誌] [最小寬度] [.精度] [長度] 格式字符
| 字符 | 輸出類型 |
|---|---|
| d / i | 帶符號十進制整數 |
| o | 八進制無符號整數(不輸出前綴) |
| x / X | 十六進制無符號整數(不輸出前綴) |
| u | 十進制無符號整數 |
| f | 小數形式輸出單/雙精度實數 |
| e / E | 指數形式輸出單/雙精度實數 |
| g / G | 以 %f 或 %e 中較短者輸出 |
| c | 單個字符 |
| s | 字符串 |
| p | 指標位址 |
| 標誌 | 意義 |
|---|---|
| - | 左對齊,右側填空格 |
| + | 輸出正負號(正數加 +) |
| 空格 | 正數前加空格,負數加 - |
| # | 對 o 加前綴 0;對 x 加 0x;對 e/f/g 強制顯示小數點 |
. 開頭。對數值指定小數位數;對字符串指定最大輸出字符數* 由引數提供(如 printf("%.*f", 3, 1.23456) 輸出 1.235)h:short int(%hd)l:long int(%ld)或 double(%lf,與 %f 同)L:long double(%Lf)int a = 1023;
long int b = 2222;
short int c = 123;
unsigned int d = 1234;
char e = 'x';
float f = 3.1415926535898;
double g = 3.1415926535898;
printf("a=%d\n", a); // 1023
printf("a=%o\n", a); // 1777
printf("a=%x\n", a); // 3ff
printf("b=%ld\n", b); // 2222
printf("c=%d\n", c); // 123
printf("d=%u\n", d); // 1234
printf("e=%c\n", e); // x
printf("f=%f\n", f); // 3.141593
printf("g=%f\n", g); // 3.141593
不同編譯器求值順序可能不同(Turbo C 為自右向左)。例如:
int i = 8;
printf("%d %d %d %d %d", ++i, --i, i--, i++, -i--);
// Turbo C 輸出:8 7 8 7 -8
求值順序影響結果,但輸出順序仍為左至右。編寫程式時避免在同一 printf 中對同一變數多次修改。