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

C語言資料型別體系全景圖:整數、浮點、字元、衍生型別關係與轉換規則

     編輯:C 語言問答

基本型別分類

類別關鍵字典型大小範圍/精度格式字元
整數char1 byte-128~127 / 0~255%c / %hhd
short / short int2 bytes-32768~32767%hd
int4 bytes-2147483648~2147483647%d
long / long int4/8 bytes同 int 或更大%ld
long long8 bytes-9e18~9e18%lld
浮點數float4 bytes~7 位有效數字%f / %e
double8 bytes~15 位有效數字%lf (scanf) / %f (printf)
long double10/16 bytes更高精度%Lf
字元char1 byteASCII 0~127%c
布林_Bool / bool (<stdbool.h>)1 byte0/1%d
空型別void不可完成型別無值無

符號修飾字

  • signed:預設,含負數(int 即 signed int)。
  • unsigned:僅非負,範圍擴大一倍(unsigned int 0~4294967295)。
  • 字元型別:char 是否帶號由實作定義,跨平台請明確寫 signed char / unsigned char。

隱式型別轉換規則 (Usual Arithmetic Conversions)

  1. 整數提升:char, short, _Bool、位元欄位、列舉 → int (或 unsigned int)。
  2. 等級較高者勝出:long double > double > float > unsigned long long > long long > unsigned long > long > unsigned int > int。
  3. 同等級:unsigned 勝過 signed。

常見轉換陷阱

程式碼結果原因
unsigned int u = 1; int i = -1; u > itrue (1)i 轉為 unsigned 變巨大正數
float f = 1.1; f == 1.1false1.1 是 double,精度更高
char c = 200; printf("%d", c);-56 (若 char 有號)溢位環繞

常數與變數

  • 常數:字面值 (123, 3.14, 'a', "str")、const 修飾變數、enum 列舉常數、#define 巨集。
  • 變數:可修改的具名儲存空間。
  • 字串常數:"hello" 型別為 const char[6],儲存在唯讀區,**不可修改**。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved