C語言之基本數(shù)據(jù)類型
2019-11-14 08:53:48
供稿:網(wǎng)友
C語言數(shù)據(jù)類型之基本類型C語言編程其中一個比較重要的地方是對數(shù)據(jù)的組織。我們通常會看到各種結(jié)構(gòu)體類型的數(shù)據(jù),就是對數(shù)據(jù)的一種組織方式。這樣將數(shù)據(jù)組織起來,有利于我們對數(shù)據(jù)的操作和管理。合理的數(shù)據(jù)結(jié)構(gòu),可以使我們的程序算法簡潔、有條理。今天,不講數(shù)據(jù)結(jié)構(gòu),而是講一下組成這些結(jié)構(gòu)體的基本數(shù)據(jù)。C語言中涉及到的基本數(shù)據(jù)類型并不多,共有以下幾種:char(字符型)、short(短整型)、int(整型)、long(長整型)float(單精度浮點型)、double(雙精度浮點型)。可以將這6種基本類型做一下歸類:字符值:char。用于表示字符,如'a','b','c','1','2','3'等等。整值:short、int、long。用于表示一個整數(shù),如0,1,3,5,56,582等等。浮點值:float、double。用于表示一個小數(shù),如1.2,1.32,4.563等等。也就說,在你的程序中,如有想用一個變量來表示字符的,那么就用char來進行聲明和定義,如果想用來表示整數(shù)的,就用short、int或者long來進行聲明和定義,如果想表示一個小數(shù),那么就使用float或者double來進行聲明和定義。如下:char c = 'a';int i = 54;float f = 3.3;PS:以上為了便于理解,對這些變量進行了初始化。OK,上面只是對這些基本類型數(shù)據(jù)的一些簡單說明,下面再深入一下。對于整值來說,可以用short聲明,也可以用int聲明,也可以用long聲明,那么這三者有什么區(qū)別呢?對于浮點值來說,可以用float聲明,也可以用double聲明,這兩者又有什么區(qū)別呢?這就涉及到一個叫字節(jié)的東西。大家知道,計算機能夠識別的數(shù)據(jù)是二進制數(shù)據(jù),即只認識0或1,那么當我們定義并初始化一個整值變量時,計算機是怎么去進行識別的呢?前人總是很機智的,他們提出了一個叫進制轉(zhuǎn)換的概念,即可以將十進制(八進制等)數(shù)轉(zhuǎn)換為二進制(反之亦然)。那么當我們定義并且初始化一個變量時,該變量存儲到內(nèi)存中時,就會自動按照二進制的方式去存儲了。那在內(nèi)存中,一個0或者1稱為一個位,那么8個位就為一個字節(jié),這樣的話,一個字節(jié)(不考慮符號問題)最大可以表示255(2^8-1),最小可以表示0(具體可以看看二進制和十進制的轉(zhuǎn)換方法)。那么到這里,大家肯定疑問,一個字節(jié)最大才能表示255,那我的變量數(shù)值大于255怎么辦?那就再多加一個字節(jié)唄,這樣兩個自己最大就能表示65535(2^16-1)。如果還不夠,那么我就再加一個字節(jié),三個字節(jié)最大能表示2^24-1,以此類推。。。那么short、int、long的區(qū)別是什么呢?short類型的變量為兩個字節(jié),int類型的變量為4個字節(jié),long類型的變量為8個字節(jié)(皆針對32位系統(tǒng))。那到這里,就很明了了,這三者的區(qū)別就是能表示的數(shù)的最大值不一樣,如short最大只能表示65535,而int最大只能表示2^32-1,long最大只能表示2^64-1。這樣就看你的程序需求,根據(jù)變量的值范圍進行變量聲明。不過在變量值不大于4個字節(jié)的基礎(chǔ)上,一般都是用int進行聲明了。那float和double又有什么區(qū)別呢?double的精度比float高,double的有效位達到15位(有些系統(tǒng)是16位),比如可以表示3.12345678912345這么大精度的數(shù)值,而float的精度就只有6位(有些系統(tǒng)是7位),只能表示3.12345這么大精度的數(shù)值。類型 有效位 字節(jié)數(shù)****************************************float 6 – 7 4****************************************double 15 – 16 8****************************************類型 指數(shù)長度 尾數(shù)長度****************************************float 8 位 23 位****************************************double 11 位 52 位****************************************float和double在現(xiàn)有項目中用得比較少,暫時只做這些總結(jié),后續(xù)若項目中有用到,再進行總結(jié)。關(guān)于浮點值和二進制的轉(zhuǎn)換規(guī)則還有點迷糊。