c語言數據類型

參考文章

說明符 + 限定符linux

數據類型一覽表

算數類型(arithmetic type)

字符類型

signed char     有符號字符
unsigned char   無符號字符
char            字符(能夠是 signed char 或 unsigned char,由實現定義)

// 除此以外,還定義了寬字符(c11):

1. wchar_t
2. char16_t
3. char32_t

整數類型

1. 短整形緩存

short
signed short
short int
signed short int

// 等價於
short int

2. 無符號短整形多線程

unsigned short
unsigned short int

// 等價於
unsigned short int

3. 整形併發

signed
int
signed int

// 等價於
int

4. 無符號整形atom

unsigned
unsigned int

// 等價於
unsigned int

5. 長整型線程

long
long int
signed long
signed long int

// 等價於
long int

6. 無符號長整型unix

unsigned long
unsigned long int

// 等價於
unsigned long int

7. long long int(c99,不懂該怎麼稱呼了...)指針

long long
long long int
signed long long
signed long long int

// 等價於
long long int

8. unsigned long long int(c99)rest

unsigned long long
unsigned long long int

// 等價於
unsigned long long int

數據模型code

每種實現對數據類型的大小選擇統稱爲 數據模型,如下四種是你們廣泛接受的數據模型:

32 System

1. LP32 2/4/4,(int 16bit,long & pointer 32bit)
    1. 僅出如今 win16 API 中
2. LP32 4/4/4,(int,long,pointer 32bit)
    1. win32 API
    2. 類 unix 系統(linux or mac)

64 System

3. LP64 4/4/8,(int & long 32big,pointer 64 bit)
4. LP64 4/8/8,(int 32 bit,long & pointer 64 bit)

其餘模型很是罕見(幾乎能夠不用理會,實際就是無需理會)!舉一個例子,數據模型 LP64 8/8/8(int & long & pointer 64 bit),這種數據模型只出如今早期的 unix 機器上

浮點類型

1. float    單精度浮點型    32bit(4byte)
2. double   雙精度浮點型    64bit(8byte)
3. long double 擴展精密浮點型(須要機器支持) >=64 bit

若是使用了 complex.h,表示須要用到複雜的浮點數

如下寫法都是有效的:

float _complex          float complex
double _complex         double complex
long double _complex    long double complex

float _imaginary        float imaginary
double _imaginary       double imaginary
long double _imaginary  long double imaginary

原子類型(atomic type),限定符

支持如下三種寫法:

// p 是指向原子 const int 的指針
_Atomic const int * p1;
// 同上
const atomic_int * p2;
// 同上
const Atomic(int) * p3;

原子類型的對象是惟一不受數據競爭的對象,也就是說,它們能夠由兩個線程併發地修改,或者由另外一個線程修改。

擁有如下四個相關屬性:

1. 寫入一致性(write-write-coherence)
2. 讀取一致性(read-read-coherence)
3. 讀寫一致性(read-write-coherence)
4. 寫讀一致性(write-read-coherence)

具體解釋參考官方文檔:atomic type

目前的 visual studio 中不支持該類型

由 typedef 引入的說明符

// 聲明 int_t 是 int 的別名
typedef int int_t

// 進階
// char_t 是 char 的別名
// chart_p 是 char* 的別名
// fp 是 char(*)(void) 的別名
typedef char char_t, *char_p, (*fp)(void)

修飾符

const

// 常量不可改動
const int a = 10;

volatile

// 提醒計算機:
// a 變量可能會實時更新,不能緩存
// 這個通常多用在多線程場景下
volatile int a = 10;

restrict

restrict 詳解

特殊的常量

INFINITY    無窮
NaN         非數字

數值範圍

若是須要準確的瞭解到數值的範圍,請參閱(頁面底部):各類類型對應的數值範圍

相關文章
相關標籤/搜索