首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言格式化輸出完全指南:%d、%lld、%lf、%c 格式符詳解

     編輯:C 語言問答

C語言 printf 格式控制符深度解析

初學者常被 printf 的格式符搞糊塗:為什麼整數用 %d,長整數用 %lld,雙精度浮點數用 %lf,字符用 %c?本文將從底層原理徹底講透這個問題。

常見格式符對照表

數據類型格式符含義來源示例
int%dDecimal(十進制)printf("%d", 234);
long%ldLong + Decimalprintf("%ld", 1000L);
long long%lldLong Long + Decimalprintf("%lld", -93LL);
float%fFloatprintf("%f", 3.14f);
double%lfLong Float(歷史原因)printf("%lf", 32e3);
char%cCharacter 首字母printf("%c", 'e');
八進制 int%oOctalprintf("%o", 037);
十六進制 int%xheXadecimalprintf("%x", 255);

為什麼 double 用 %lf 而非 %df?

歷史原因:早期 C 語言中 %d 已被 int 佔用,而 float 傳遞給 printf 時會自動提升為 double(默認參數提升規則)。為了區分,double 採用 %lf(Long Float 的縮寫)。在 printf 中 %f 和 %lf 效果相同,但在 scanf 中必須嚴格區分:float 用 %f,double 用 %lf。

數據類型本質解析

整數家族

  • char:1 字節,範圍 -128~127 或 0~255,本質是小整數,常用於存儲 ASCII 字符
  • short / int:通常 2 或 4 字節,標準整數類型
  • long:至少 4 字節,長整數
  • long long:至少 8 字節(64 位),範圍約 -9.22×10¹⁸ ~ 9.22×10¹⁸

浮點數家族

  • float:4 字節,單精度,約 6-7 位有效數字
  • double:8 字節,雙精度,約 15-16 位有效數字,默認浮點類型
  • long double:10/12/16 字節,擴展精度

原始代碼修正版

#include <stdio.h>

int main(void) {
    printf("234=%d\n", 234);
    printf("-93=%lld\n", -93LL);
    printf("037=%d\n", 037);        // 八進制 037 = 十進制 31
    printf("037=%c\n", '\037');     // 八進制轉義字符,ASCII 31(控制字符)
    printf("32e3=%lf\n", 32e3);     // 科學計數法 32×10³ = 32000.0
    printf("73.43=%lf\n", 73.43);   // 雙精度浮點數
    printf("'e'=%c\n", 'e');        // 字符輸出
    return 0;
}

記憶口訣

「整數看進制,長短看前綴,浮點分精度,字符取首字」

  • 十進制 d、八進制 o、十六進制 x
  • l 表示 long,ll 表示 long long
  • f 表示 float,lf 表示 long float (double)
  • c 表示 character
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved