C語言基礎-01-基本數據類型

C語言的數據類型大體能夠分爲下圖中的幾類:html

1、變量

跟其餘語言同樣,C語言中用變量來存儲計算過程使用的值,任何變量都必須先定義類型再使用。爲何必定要先定義呢?由於變量的類型決定了變量佔用的存儲空間,因此定義變量類型,就是爲了給該變量分配適當的存儲空間,以便存放數據。好比你是char類型,我就只給你分配1個字節就夠了,不必分配2個字節、3個字節乃至更多的存儲空間。ios

下面的表格描述了在16位編譯器環境下,基本數據類型所佔用的存儲空間,瞭解這些細節,對之後學習指針和數組時是頗有幫助的編程

須要注意的是:數組

1.局部變量的使用跟Java稍微有點不同

1> 在Java中,你聲明瞭一個局部變量後,若是沒有通過初始化賦值就使用該變量,編譯器直接報錯安全

第9行報錯了,由於變量a沒有初始化app

 

2> 在C語言中,你聲明看一個局部變量後,沒有通過初始化賦值是能夠使用的學習

複製代碼

1 #include <stdio.h>
2
3 int main()
4 {
5   int b;           
6   printf("%d", b);
7   return 0;
8 }

複製代碼

但這是很危險的,不建議這樣作。大多數人應該以爲變量b打印出來應該是0,其實不是。由於系統會隨意給變量b賦值,獲得的是垃圾數據。spa

上述代碼的打印結果是:所以,局部變量仍是必須先進行初始化賦值,而後再使用,這樣纔是最安全的作法。指針

* 若是全局的int類型變量,系統會默認賦值爲0code

 

2.char的取值範圍是:ASCII碼字符 或者 -128~127的整數

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

// 方式1char c = 'A';// 方式2char c = 65;

上面兩種方式是等效的,由於大寫字母A的ASCII碼值恰好爲65。點擊查看ASCII碼錶的全部值

 

3.char只能存儲一個字符

漢字或者字符串須要用字符數組來存儲,由於一個漢字佔了2個字符,一個字符串是由一個或者多個字符組成的。

所以,下面的寫法都是錯誤的:

char c1 = '我';char c2 = '123';char c3 = "123";

 

回到頂部

2、類型修飾符

咱們還能夠在基本數據類型的前面加一些修飾符,也有人稱之爲限定符,同樣的意思。

有以下4種類型修飾符:

  • short  短型

  • long  長型

  • signed  有符號型

  • unsigned  無符號

1.用法演示

這些修飾符最常是用來修飾int類(能夠省略int)

複製代碼

 1 // 下面兩種寫法是等價的 2 short int s1 = 1; 3 short s2 = 1; 4  5 // 下面兩種寫法是等價的 6 long int l1 = 2; 7 long l2 = 2; 8  9 // 能夠連續使用2個long10 long long ll = 10;11 12 // 下面兩種寫法是等價的13 signed int si1 = 3;14 signed si2 = 3;15 16 // 下面兩種寫法是等價的17 unsigned int us1 = 4;18 unsigned us2 = 4;19 20 // 也能夠同時使用2種修飾符21 signed short int ss = 5;22 unsigned long int ul = 5;

複製代碼

 

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

unsigned char c1 = 10;
signed char c2 = -10;long double d1 = 12.0;

 

回到頂部

3、不一樣編譯器環境下基本數據類型的存儲長度

紅色的表明經常使用的數據類型


注:本文轉自M了個J的博客。

相關文章
相關標籤/搜索