資料型態(C語言) - 維基百科,自由的百科全書
文章推薦指數: 80 %
signed short, 2bytes, -32768至32767 ; long int, 4bytes 或 8bytes · -2147483648至2147483647 或 -9223372036854775808至9223372036854775807 ; unsigned long, 4bytes 或
資料型態(C語言)
維基百科,自由的百科全書
跳至導覽
跳至搜尋
C標準函式庫
一般
資料型態
字元類型
字串
數學
檔案輸入/輸出
日期/時間
在地化
記憶體分配
過程控制
訊號
替代標記
雜項
目次
1基礎數據類型
2複合數據類型
2.1結構
2.2聯合
2.3枚舉
3參考文獻
基礎資料型態[編輯]
注意:以下是典型的資料位長和範圍。
編譯器可能使用不同的資料位長和範圍。
請參考具體的參考。
在標準標頭檔limits.h和float.h中說明了基礎資料的長度。
float,double和longdouble的範圍就是在IEEE754標準中提及的典型資料。
另外,C99添加了新的複數類型,C11添加了原子類型,它們不在本條目討論範圍內。
關於這些類型的具體含義和部分細節,參見資料類型,最後一列寫出了這些類型在硬體層面的類型(x86&x86_64實現)
關鍵字
位元組(位元組)
範圍
格式化字串
硬體層面的類型
備註
char
1bytes
通常為-128至127或0至255,與體系結構相關
%c
位元組(Byte)
大多數情況下即signedchar;
在極少數1byte !=8bit或不使用ASCII字元集的機器類型上範圍可能會更大或更小。
其它類型同理。
unsignedchar
1bytes
通常為0至255
%c、%hhu
位元組
signedchar
1bytes
通常為-128至127
%c、%hhd、%hhi
位元組
int
2bytes(16位元系統)或4bytes
-32768至32767或-2147483648至2147483647
%i、%d
字(Word)或雙字(DoubleWord)
即signedint(但用於bit-field時,int可能被視為signedint,也可能被視為unsignedint)
unsignedint
2bytes或4bytes
0至65535或0至4294967295
%u
字或雙字
signedint
2bytes或4bytes
-32768至32767或-2147483648至2147483647
%i、%d
字或雙字
shortint
2bytes
-32768至32767
%hi、%hd
字
即signedshort
unsignedshort
2bytes
0至65535
%hu
字
signedshort
2bytes
-32768至32767
%hi、%hd
字
longint
4bytes或8bytes[1]
-2147483648至2147483647或-9223372036854775808至9223372036854775807
%li、%ld
長整數(LongInteger)
即signedlong
unsignedlong
4bytes或8bytes
0至4294967295或0至18446744073709551615
%lu
整數(UnsignedInteger)或
長整數(UnsignedLongInteger)
依賴於實現
signedlong
4bytes或8bytes
-2147483648至2147483647或-9223372036854775808至9223372036854775807
%li、%ld
整數(SignedInteger)或
長整數(SignedLongInteger)
依賴於實現
longlong
8bytes
-9223372036854775808至9223372036854775807
%lli、%lld
長整數(LongInteger)
unsignedlonglong
8bytes
0至18446744073709551615
%llu
長整數(UnsignedLongInteger)
float
4bytes
2.939x10−38至3.403x10+38(7sf)
%f、%e、%g
浮點數(Float)
double
8bytes
5.563x10−309至1.798x10+308(15sf)
%lf、%e、%g
雙精度浮點型(DoubleFloat)
longdouble
10bytes或16bytes
7.065x10-9865至1.415x109864(18sf或33sf)
%lf、%le、%lg
雙精度浮點型(DoubleFloat)
在大多數平台上的實現與double相同,實現由編譯器定義。
_Bool
1byte
0或1
%i、%d
布林型(Boolean)
註:粗體為C99所新增的類型。
複合資料型態[編輯]
在C語言中,複合資料型態可分為三類:結構、聯合和列舉。
在現代C語言中,聯合和列舉的使用頻率已逐漸減少。
結構[編輯]
主條目:結構體(C語言)
結構(structurevariable)允許構造由多個基礎資料型態組合而成的複雜結構[2]。
結構為物件導向程式設計的藍本。
以下範例通過結構和結構體裡的指標實現了二元樹結構:
typedefstructBintree{
intdata;
structbintree*lchild;//leftchildofthenode
structbintree*rchild;//rightchildofthenode
}bintree;//自定义bintree类型
為結構定義變數時通常會用到動態記憶體分配:
#definemktree()(bintree*)malloc(sizeof(bintree))//分配该结构所需的内存单元数量
bintree*tree;
tree=mktree();//分配到tree指针
tree->data=1;
tree->lchild=mktree();
...
由於C語言不具備自動垃圾收集(GarbageCollection)功能,使用完畢後呼叫free(treePtr)來釋放之前通過malloc(size)分配的記憶體。
詳見這裡。
在C99標準中,還添加了名為伸縮型陣列成員的特性[3],關於此特性的內容超出了該條目的介紹範圍,若需了解更多資訊可參見文件或其它材料。
聯合[編輯]
主條目:聯合體
聯合(union)與結構相類似,但不同的是,聯合在某一特定時刻只有最後被使用的成員的值是確定的,因此一個聯合只使用所有成員中所占空間最大的成員所使用的記憶體。
然而,一些編譯器可以通過編譯參數或#pragma的方式強制聯合使用與所有成員所占儲存空間的和相等的儲存空間,在這種情況下,除最後被使用的成員外,其餘成員的值是未定義的[2]。
以下給出了聯合的一個聲明:
unionfoo{
intbar;
doublefoobar;
};
foo.bar=8;
foo.foobar=3.14;
在這個例子中,假設使用32位元平台編譯,一個double變數占8位元組,一個int變數占2位元組(由上表得),則該聯合所占大小即為double類型的大小——8位元組。
在這段程式執行完畢後,foo.bar的值是未定義的,而foo.foobar的值為3.14。
列舉[編輯]
列舉(enumeratedtype)用來聲明一組整數常數。
預設情況下,列舉聲明格式為enumtype{value1,value2,...,valuen};此時value1,value2分別為0,1,直到n-1。
事實上,列舉類型在C語言實現中是以int類型儲存的[2]。
以下是列舉的一個聲明:
enuma{b,c,d};
在此之後,便可以以如下方式使用:
enumafoo;
foo=b;
if(foo!=c)//等同于if(foo !=1)
{
do_something();
}
而此時的b,c,d分別為0,1,2。
另外,也可以手動為列舉列表中的常數賦值。
下面是一個例子:
enumcolour{red=100,blue=700,yellow=200};
則此時red,blue,yellow的值分別為100,700,200.
需要注意的是,列舉在C和C++中所表現的行為有一些細微的差異。
參見C與C++的相容性。
參考文獻[編輯]
^GCC、Clang等實現中,64位元代碼的long類型為64位元,而MSVC中則維持32位元
^2.02.12.2ISO/IEC9899:2018(PDF).[2020-06-10].(原始內容存檔(PDF)於2020-07-22).
^ISO/IEC9899:1999(PDF).[2020-06-15].(原始內容存檔(PDF)於2018-01-11).
閱論編C語言
《C程式設計語言》(K&RC)
歷史
ANSIC
C99
C11
C18
嵌入式C語言
MISRAC
特性
Functions
標頭檔
字串
Syntax
Preprocessor
資料型態
指標
函式庫
glibc
C標準程式庫
CPOSIXlibrary
Dietlibc
uClibc
Newlib
EGLIBC
Bionic
klibc
musl
編譯器
Clang
GCC
MicrosoftMSC編譯器
IntelC++編譯器
BorlandTurboC
LCC
PellesC
PCC
TCC
C++/CLI
C++/CX
WatcomC/C++compiler
C與其他的程式語言
C與C++
相容性
運算子
Pascal與C的比較(英語:ComparisonofPascalandC)
CtoJavabyte-codecompiler
衍生的程式語言
C++
C♯
Objective-C
D語言
Alef(英語:Alef(programminglanguage))
Limbo
Go
Vala
C/C++的整合開發環境
分類
閱論編資料型態無解釋的
位元
位元組
三進位位
三進位位元組
Word
數值
整數
符號性
有符號數
無符號數
定點數
浮點數
雙精度
擴充精度(英語:Extendedprecision)
半精度
迷你浮點數(英語:Minifloat)
八倍精度(英語:Octuple-precisionfloating-pointformat)
四倍精度(英語:Quadruple-precisionfloating-pointformat)
單精度
有理數(英語:Rationaldatatype)
複數(英語:Complexdatatype)
任意精度算術
區間(英語:intervalarithmetic)
文字
字元
字串
指標
記憶體位址
實體位址
虛擬位址
參照
組合
代數資料型態(英語:Algebraicdatatype)
廣義(英語:generalizedalgebraicdatatype)
陣列
關聯陣列
類
串列
物件
元物件
可選類型
積類型(英語:Producttype)
記錄
集合
聯合體
標籤
其他
布林型
底層類別(英語:Bottomtype)
容器
列舉類型
異常
一等函式
不透明資料型態(英語:Opaquedatatype)
遞迴資料型態
訊號標
字串流
頂類型(英語:Toptype)
類型類
型別系統
單位類型(英語:Unittype)
Void
不定型別
相關議題
抽象資料型別
資料結構
介面
種類(英語:Kind(typetheory))
元類
物件類型(英語:Objecttype(object-orientedprogramming))
原始型別
協定
子類型
C++模板
型別構造器
參數多型
取自「https://zh.wikipedia.org/w/index.php?title=数据类型_(C语言)&oldid=69852460」
分類:C語言C標準函式庫數據類型
導覽選單
個人工具
沒有登入討論貢獻建立帳號登入
命名空間
條目討論
臺灣正體
不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體
查看
閱讀編輯檢視歷史
更多
搜尋
導航
首頁分類索引特色內容新聞動態近期變更隨機條目資助維基百科
說明
說明維基社群方針與指引互助客棧知識問答字詞轉換IRC即時聊天聯絡我們關於維基百科
工具
連結至此的頁面相關變更上傳檔案特殊頁面靜態連結頁面資訊引用此頁面維基數據項目
列印/匯出
下載為PDF可列印版
其他語言
العربيةDeutschEnglishFrançais한국어РусскийУкраїнськаTiếngViệt
編輯連結
延伸文章資訊
- 1int - Yahoo奇摩字典搜尋結果
int. · = interest;= interior ; int · 【電腦】區域名稱中專指國際性組織的一類 ; int. · international ; ad int. · = ad ...
- 2整數
3) 長整數:類型說明符為long int或long,在記憶體中占4個位元組。 4) 無符號型:類型說明符為unsigned。 無符號型又可與上述三種類型匹配而構成:.
- 3INT - Google 文件編輯器說明
注意事項. INT 函式「不」等於 位數 設為 0 的 ROUNDDOWN 函式。
- 4Excel-INT函數的認識與應用
透過INT 函數可以簡單求得整數商。 【例】利用INT 函數應用在依據大、小紙的紙張規格,以求取最多可裁切紙張數。
- 5整数(计算机科学) - 维基百科,自由的百科全书
它也称为整数数据类型,或简称整型数、整型。 通常是程式設計語言的一種基礎資料型態,例如java及C 程式語言的int 資料類型,然而這種基礎資料型態 ...