上一篇文章中介紹了變量,在C語言中創建一個變量,就需要對此變量的數據類型進行聲明。本篇文章就來重點講一下數據類型。
計算機存儲單位在講數據類型之前,先引入一個知識點,計算機的存儲單位。
前面有說過,計算機隻能識别二進制的字節碼語言,如11001001。因此存儲在計算機當中的所有信息,無論是視頻、圖片、還是文字,最終都要轉化為二進制字節碼。
每一位數字所占的大小為1bit(位,直譯比特,沒錯比特币的比特)。bit是計算機中最小的存儲單位。
8個bit組成了一組Byte(字節,簡稱B)。Byte是計算機中最基本的存儲單位。
1024個Byte即1KB(千字節),1024個KB即1MB(百萬字節,俗稱兆)。
目前已知的計算機存儲單位還有:GB、TB、PB、EB、ZB、YB、BB、DB(目前最大的存儲單位)。
基本數據類型了解計算機存儲單位之後,來說一下C語言的數據類型。
C語言提供了6種最基本的數據類型,分别是:short、int、long、float、double、char。這六種數據類型又根據其存儲的特性劃分了三種類型。
第一種,整型。用來存儲整數的類型,如1、32、49等。整型包括了以下 3 種數據類型:
短整型,short,所占存儲空間大小為2個字節,存儲的數字範圍在-2^15 ~ 2^(15) -1。
整型,int,所占存儲空間大小為4個字節,存儲的數字範圍在-2^31~ 2^(31)-1。
長整型,long,所占存儲空間大小為4個字節,存儲的數字範圍在-2^31 ~ 2^(31)-1。
第二種,浮點型。用來存儲小數的類型,如3.14、32.00、49.2等。浮點型包括了以下 2 種數據類型:
單精度類型,float,所占存儲空間大小為4個字節,存儲的數字範圍在-3.4x10^-38 ~ 3.4x10^38。
雙精度類型,double,所占存儲空間大小為8個字節,存儲的數字範圍在-1.7x10^-380 ~ 1.7x10^380。
單精度和雙精度的差别:前者所占的範圍要比後者小,但換來的是前者的處理速度要快一些。
第三種,字符型。char,用來表示字符的類型,如A、e、\n等等。
char,所占存儲空間大小為1個字節,存儲的範圍在-128 ~ 127。
雖然 char 被單獨抓出來獨立為一個類型,但本質上還是屬于整數類型。這是因為計算機隻能識别二進制碼,因此 char 實際存儲的值是數字,而不是字符。
在ASCII碼中,一共有 128 個數字,對應了 128 個字符。(因為計算機是從0開始,所以最大範圍是127)。
圖片來源:OSCHINA-開源中國
同時,定義一個 char 變量隻能有一個字符,而該字符是使用單引号 '' 包裹起來的。
雙引号 "" 包裹的叫做字符串,即一串的字符,如 Hello World。
在C語言當中沒有專門定義字符串的内容,需要使用間接的方式來實現字符串,例如創建字符數組來實現。
我們都知道數字有正的,就有負的。
以上說的這些,都是默認有符号的,即有正有負。也有無符号的,專門來表示數量的。定義方式是在定義類型前面加上一個 unsigned,即表示無符号的,隻有正數。
無符号的數據類型的取值範圍,則變為 0 ~ 2^n- 1(n即所占字節數 x 8)。
看到最後,有人就要問了,同樣都是用來表達整數和小數,為什麼需要劃分這麼多類型呢?隻用一個不就好了?
這就不得不提起那個風雨漂泊、電閃雷鳴的年代……
在用C語言開發熱潮的那個年代,内存資源不像現在這麼充裕,它是一個非常稀罕的東西。稍一不注意,内存就不夠用了。
因此如何用最大化、最合理、最優解的方式讓最小内存發出最大的作用,就成為了當時的程序員首要考慮的問題。為了最大化節省内存資源,就出現了不同的數據類型。
本篇文章到此就結束了,主要介紹了C語言中的基本數據類型。下一篇文章,将繼續延伸不同數據類型轉換的内容。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!