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

C語言資料類型詳解:整數、浮點數與字符存儲原理

     編輯:關於C

理解資料在記憶體中的表示是C語言程式設計的基石。本文深入剖析整數、浮點數與字符類型的存儲機制、範圍差異及常見陷阱。

整數類型

整數無小數部分,以二進制補碼形式存儲。例如 7 在 8 位元組中為 00000111。關鍵點:

  • int 通常佔 4 位元組(32 位系統),範圍 -2^31 ~ 2^31-1。
  • 無符號整數 unsigned int 範圍 0 ~ 2^32-1,無負數,減法溢位環繞。
  • 進制輸出:%d 十進制,%o 八進制,%x 十六進制,加 # 顯示前綴(0, 0x)。
int x = 100;
printf("dec=%d octal=%o hex=%x\n", x, x, x);       // 100 144 64
printf("dec=%d octal=%#o hex=%#x\n", x, x, x);     // 100 0144 0x64

整數溢位演示

int i = 2147483647;          // INT_MAX
unsigned int j = 4294967295; // UINT_MAX
printf("%d, %d, %d\n", i, i+1, i+2); // 2147483647, -2147483648, -2147483647
printf("%u, %u, %u\n", j, j+1, j+2); // 4294967295, 0, 1

有號溢位為未定義行為(實際多為環繞),無號溢位定義為模 2^n 環繞。

字符類型 char 的雙重身份

char 本質是 1 位元組整數(通常 8 位),用 ASCII 碼映射字符:

  • char c = 'A'; 等價於 char c = 65;。
  • 多字符常量 'ABCD' 將 4 個 ASCII 碼壓入 32 位整數,賦值給 char 時截取低 8 位(結果為 'D')。
char grade = 'A';
char grade1 = 65;
char testChar = 'ABCD';
printf("%c, %c, %c\n", grade, grade1, testChar); // A A D

浮點數類型

  • 表示範圍遠大於整數,但精度有限(float 約 7 位有效數字,double 約 15-16 位)。
  • 浮點運算較整數慢,現代 CPU 常含專用 FPU 加速。
  • 避免直接比較浮點數相等,應用誤差範圍判斷。

固定寬度整數類型 <inttypes.h>

使用 int16_t, int32_t 等跨平台類型,配合 PRId16 等格式宏輸出,增強可移植性。

#include <inttypes.h>
int16_t me16 = 4593;
printf("me16=%hd size=%zd\n", me16, sizeof(int16_t));
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved