在C語言中,不同的變量類型需要使用不同的格式說明符(format specifiers)進行打印。以下是常見變量類型及其對應(yīng)的打印方式:
基本整數(shù)類型
類型 格式說明符 示例代碼
int %d printf("%d", num);
short %hd printf("%hd", num);
long %ld printf("%ld", num);
long long %lld printf("%lld", num);
unsigned int %u printf("%u", num);
unsigned short %hu printf("%hu", num);
unsigned long %lu printf("%lu", num);
unsigned long long %llu printf("%llu", num);
字符類型
類型 格式說明符 示例代碼
char %c printf("%c", ch);
char(ASCII值) %d printf("%d", ch);
浮點類型
類型 格式說明符 示例代碼
float %f printf("%f", f);
double %lf printf("%lf", d);
long double %Lf printf("%Lf", ld);
科學(xué)計數(shù)法 %e 或 %E printf("%e", f);
自動選擇 %f 或 %e %g printf("%g", f);
指針類型
類型 格式說明符 示例代碼
指針地址 %p printf("%p", &var);
字符串
類型 格式說明符 示例代碼
字符串(char[] 或 char*) %s printf("%s", str);
其他格式控制
寬度和精度:
printf("%5d", num); // 輸出至少5位寬度的整數(shù)
printf("%.2f", f); // 保留2位小數(shù)
左對齊:
printf("%-10s", str); // 左對齊,占10字符寬度
顯示前綴(如 0x 或 0):
printf("%#x", num); // 輸出十六進制帶 0x 前綴
printf("%#o", num); // 輸出八進制帶 0 前綴
示例代碼
include <stdio.h>
int main() {
int a = 42;
float b = 3.14;
char c = 'A';
char str[] = "Hello";
int *ptr = &a;
printf("int: %d\n", a);
printf("float: %.2f\n", b);
printf("char: %c (ASCII: %d)\n", c, c);
printf("string: %s\n", str);
printf("pointer: %p\n", (void*)ptr);
return 0;
注意事項
類型匹配:錯誤的格式說明符可能導(dǎo)致未定義行為(如用 %d 打印 float)。
printf 參數(shù)傳遞:float 會被自動提升為 double,但顯式使用 %f 即可。
指針打印:%p 通常需要將指針強制轉(zhuǎn)換為 void*。
如果需要更復(fù)雜的格式化(如十六進制、八進制),可以使用 %x、%o 等說明符。