% [標誌] [最小寬度] [.精度] [長度] 類型
| 字符 | 意義 |
|---|---|
| d | 帶符號十進制整數(正數不輸出 +) |
| o | 八進制無符號整數(無前綴) |
| x | 十六進制無符號整數(無前綴) |
| u | 十進制無符號整數 |
| f | 小數形式輸出實數 |
| e | 指數形式輸出實數 |
| g | %f 或 %e 中較短者 |
| c | 單字符 |
| s | 字符串 |
| 標誌 | 意義 |
|---|---|
| - | 左對齊,右填空格 |
| + | 輸出正負號 |
| 空格 | 正數前加空格,負數加 - |
| # | 對 o 加 0 前綴;對 x 加 0x;對 e/f/g 強制顯示小數點 |
十進制整數。實際位數超過寬度按實際輸出;不足時左側填空格(或配合 0 標誌填 0)。
.數字。數值指定小數位數;字符串指定最大輸出字符數;超過部分截斷。
h:短整型(%hd)l:長整型(%ld)或雙精度(%lf,同 %f)
void main() {
int a=15; float b=138.3576278; double c=35648256.3645687; char d='p';
printf("a=%d,%5d,%o,%x\n", a,a,a,a);
// a=15, 15,17, f
printf("b=%f,%lf,%5.4lf,%e\n", b,b,b,b);
// b=138.357628,138.357628,138.3576,1.3836e+02
printf("c=%lf,%f,%8.4lf\n", c,c,c);
// c=35648256.364569,35648256.364569,35648256.3646
printf("d=%c,%8c\n", d,d);
// d=p, p
}
Turbo C 採自右向左求值,但輸出順序仍左至右。
void main() {
int i=8;
printf("%d\n%d\n%d\n%d\n%d\n%d\n", ++i, --i, i--, i++, -i--);
}
// 求值順序:-i-- → i++ → i-- → --i → ++i
// 輸出:8 7 8 7 -8 (但順序左至右顯示)
警告: 同一 printf 中多次修改同一變數屬未定義行為,不同編譯器結果不同,實務上應避免。
putchar(字符變數);
putchar('A'); // 輸出 A
putchar('\n'); // 換行(執行控制功能,不顯示字符)
需 #include <stdio.h>。適用於單字符輸出,比 printf("%c") 更輕量。
scanf("格式控制字符串", 位址表列);
printf,但無非格式字符提示功能&a、&b...)& 取址,否則錯誤
void main() {
int a,b,c;
printf("input a,b,c\n");
scanf("%d%d%d", &a, &b, &c);
printf("a=%d,b=%d,c=%d", a,b,c);
}
// 輸入: 7 8 9 (空格或換行分隔)
// 輸出: a=7,b=8,c=9