您的位置:首頁>正文

C語言攻讀者譜寫人人都能懂的資料之《基底資料型別》,大大福利

這個C語言專題, 是學習C/C++開發的前奏。 也為了讓有物件導向語言開發經驗的程式師, 能夠快速上手C語言。 如果你還沒有程式設計經驗, 或者對C語言、C++開發不感興趣, 請忽略

C語言有豐富的資料類型, 因此它很適合用來編寫資料庫, 如DB2、Oracle都是C語言寫的。 C語言的資料類型大致可以分為下圖中的幾類:

學習資料, 學習視頻, 免費課程:C/C++ 8群 491994603

一、變數

跟其他語言一樣, C語言中用變數來存儲計算過程使用的值, 任何變數都必須先定義類型再使用。 為什麼一定要先定義呢?因為變數的類型決定了變數佔用的存儲空間, 所以定義變數類型, 就是為了給該變數分配適當的存儲空間, 以便存放資料。 比如你是char類型, 我就只給你分配1個位元組就夠了, 沒必要分配2個位元組、3個位元組乃至更多的存儲空間。

下面的表格描述了在16位元編譯器環境下, 基底資料型別所佔用的存儲空間,

瞭解這些細節, 對以後學習指標和陣列時是很有説明的(32位, int 位元4個位元組)

學習資料, 學習視頻, 免費課程:C/C++ 8群 491994603

需要注意的是:

1> 在Java中, 你聲明了一個區域變數後, 如果沒有經過初始化賦值就使用該變數, 編譯器直接報錯

2> 在C語言中, 你聲明看一個區域變數後, 沒有經過初始化賦值是可以使用的(vs會報錯)

學習資料, 學習視頻, 免費課程:C/C++ 8群 491994603

但這是很危險的, 不建議這樣做。 大多數人應該覺得變數b列印出來應該是0, 其實不是。 因為系統會隨意給變數b賦值, 得到的是垃圾資料。 因此, 區域變數還是必須先進行初始化賦值, 然後再使用, 這樣才是最安全的做法。

3>全域的int類型變數, 系統會預設賦值為0

學習資料, 學習視頻, 免費課程:C/C++ 8群 491994603

4> char的取值範圍是:ASCII碼字元 或者 -128~127的整數

於是, 使用char存儲大寫字母A有2種賦值方式:

學習資料, 學習視頻, 免費課程:C/C++ 8群 491994603

上面兩種方式是等效的, 因為大寫字母A的ASCII碼值剛好為65。

5>char只能存儲一個字元

漢字或者字串需要用字元陣列來存儲, 因為一個漢字占了2個字元, 一個字串是由一個或者多個字元組成的。

因此, 下面的寫法都是錯誤的:

學習資料, 學習視頻, 免費課程:C/C++ 8群 491994603

二、類型修飾符

我們還可以在基底資料型別的前面加一些修飾符, 也有人稱之為限定詞, 一樣的意思。

有以下4種類型修飾符:

short 短型

long 長型

signed 有符號型

unsigned 無符號型

1.用法演示

這些修飾符最常是用來修飾int類型(可以省略int)

學習資料,學習視頻,免費課程:C/C++ 8群 491994603

2.short和long

1> short和long可以提供不同長度的整型數,也就是可以改變整型數的取值範圍,比如short的取值範圍是-32768~32767,long的取值範圍就是-2147483648~2147483647

2> 當然,資料的存儲長度也會跟著變化。比如,在64位編譯器環境下,short占2個位元組(16位元),int占4個位元組(32位元),long占8個位元組(64位元)。世界上的編譯器林林總總,不同編譯器環境下,取值範圍和佔用的長度是不一樣的,不過幸運的是,ANSI ISO制定了以下規則:

* short跟int至少為16位元(2位元組)

* long至少為32位元(4位元組)

* short的長度不能大於int,int的長度不能大於long

* char一定為為8位元(1位元組),畢竟char是我們程式設計能用的最小資料類型

3.signed和unsigned

1> signed代表有符號,包括正數、負數和0;unsigned代表無符號,只包括正數和0。比如,signed的取值範圍是-32768~32767,那麼unsigned的取值範圍是0~65535,當然,不同的編譯器有不同的取值範圍

2> 其實,signed和unsigned的區別就是它們的最高位元是否要當做符號位元,並不會像short和long那樣改變資料的長度,即所占的位元組數,

4.signed、unsigned也可以修飾char,long還可以修飾double

學習資料,學習視頻,免費課程:C/C++ 8群 491994603

三、不同編譯器環境下基底資料型別的存儲長度

紅色的代表常用的資料類型

學習資料,學習視頻,免費課程:C/C++ 8群 491994603

學習資料,學習視頻,免費課程:C/C++ 8群 491994603

2.short和long

1> short和long可以提供不同長度的整型數,也就是可以改變整型數的取值範圍,比如short的取值範圍是-32768~32767,long的取值範圍就是-2147483648~2147483647

2> 當然,資料的存儲長度也會跟著變化。比如,在64位編譯器環境下,short占2個位元組(16位元),int占4個位元組(32位元),long占8個位元組(64位元)。世界上的編譯器林林總總,不同編譯器環境下,取值範圍和佔用的長度是不一樣的,不過幸運的是,ANSI ISO制定了以下規則:

* short跟int至少為16位元(2位元組)

* long至少為32位元(4位元組)

* short的長度不能大於int,int的長度不能大於long

* char一定為為8位元(1位元組),畢竟char是我們程式設計能用的最小資料類型

3.signed和unsigned

1> signed代表有符號,包括正數、負數和0;unsigned代表無符號,只包括正數和0。比如,signed的取值範圍是-32768~32767,那麼unsigned的取值範圍是0~65535,當然,不同的編譯器有不同的取值範圍

2> 其實,signed和unsigned的區別就是它們的最高位元是否要當做符號位元,並不會像short和long那樣改變資料的長度,即所占的位元組數,

4.signed、unsigned也可以修飾char,long還可以修飾double

學習資料,學習視頻,免費課程:C/C++ 8群 491994603

三、不同編譯器環境下基底資料型別的存儲長度

紅色的代表常用的資料類型

學習資料,學習視頻,免費課程:C/C++ 8群 491994603

同類文章
Next Article
喜欢就按个赞吧!!!
点击关闭提示