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