十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
在向大家詳細(xì)介紹C++數(shù)據(jù)類型之前,首先讓大家了解下C++數(shù)據(jù)類型,然后全面介紹C++數(shù)據(jù)類型,以及C++數(shù)據(jù)類型長(zhǎng)度問題,在這里拿出來和大家分享一下,希望對(duì)大家有用。。。

C語言中的整數(shù)類型有char, short, int, long等幾種, 下面是C語言對(duì)每種數(shù)據(jù)類型長(zhǎng)度的規(guī)定:
(a). short和long類型的長(zhǎng)度不相同
(b). int類型通常同具體機(jī)器的物理字長(zhǎng)相同
(c). short通常是16bits, int通常是16bits or 32bits每種編譯器可以根據(jù)硬件的不同自由確定, 但是short和int必須最少是16bits, 而long類型必須最少是32bits, 并且short必須比int和long類型要短。
sizeof() 運(yùn)算符返回的是一種數(shù)據(jù)類型中所包含的字節(jié)數(shù)(bytes), AnsiC規(guī)定sizeof(char)必須返回1,當(dāng)sizeof作用于數(shù)組時(shí), 返回的是數(shù)組中所有成員所占的字節(jié)數(shù)(注意并不是數(shù)組中成員的個(gè)數(shù)), 當(dāng)sizeof()作用于結(jié)構(gòu)體和公用體時(shí),返回的不僅僅是數(shù)據(jù)成員總的字節(jié)數(shù), 還包括編譯器為了實(shí)現(xiàn)字節(jié)對(duì)其而填充的那些字節(jié)。
C++數(shù)據(jù)類型長(zhǎng)度問題:
一、字節(jié)和字長(zhǎng)
字節(jié),八位就是一個(gè)字節(jié),是固定概念。字長(zhǎng)是指計(jì)算機(jī)一次能處理的二進(jìn)制數(shù)據(jù)的長(zhǎng)度,是一個(gè)非固定的概念。例如,8位計(jì)算機(jī)的字長(zhǎng)為8,即一個(gè)字節(jié), 32位計(jì)算機(jī)的字長(zhǎng)位32,即4個(gè)字節(jié),同理,64位計(jì)算機(jī)的字長(zhǎng)為64,即8字節(jié)。
二、C++中的C++數(shù)據(jù)類型
1、字符型數(shù)據(jù)char,該類型始終是一個(gè)字節(jié)長(zhǎng),即8位。
2、整形int、短整型short和長(zhǎng)整形long。通常int為一個(gè)字長(zhǎng),short為半個(gè)字長(zhǎng),long為一個(gè)或2個(gè)字長(zhǎng)(在32位機(jī)器中為一個(gè)字長(zhǎng))。
3、浮點(diǎn)型float、雙精度double、和長(zhǎng)雙精度long double,分別表示單精度浮點(diǎn)數(shù) 雙精度浮點(diǎn)數(shù)和擴(kuò)展精度的浮點(diǎn)數(shù)值。典型情況下,float 為一個(gè)字,double是兩個(gè)字,long double為兩個(gè)或三個(gè)或四個(gè)字。
顯然,如果找不出要C++數(shù)據(jù)類型的理由,那么談什么“正確的學(xué)習(xí)方法”等于是廢話。 首先重復(fù)一句Bjarne的話:“我們的系統(tǒng)已經(jīng)是極度復(fù)雜的了,為了避開C++的復(fù)雜性而干脆不用C++(Linus的做法),無異于因噎廢食?!痹谒锌捎肅和C++的領(lǐng)域,C++都是比C更好的語言。
當(dāng)我說“更好的”時(shí)候,我說的是C++擁有比C更安全的類型檢查、更好的抽象機(jī)制、更優(yōu)秀的庫。當(dāng)然,凡事都有例外,如果你做的項(xiàng)目1)不大。2)編碼中用不到什么抽象機(jī)制,甚至ADT(抽象數(shù)據(jù)類型。
如std::complex這種不含多態(tài)和繼承的)也用不到,RAII也用不到,異常也用不到。3)你連基礎(chǔ)庫(如,簡(jiǎn)化資源管理的智能指針、智能容器)都用不著。那么也許你用C的確沒問題;所以如果你的情況如此,不用和我爭(zhēng)論,因?yàn)槲覠o法反駁你。我們這里說的領(lǐng)域大致是Bjarne在“C++應(yīng)用列表”里面列出來的那些地方。
底線是:如果把C++中的諸多不必要的復(fù)雜性去掉,留下那些本質(zhì)的,重要的語言特性,簡(jiǎn)化語言模型,消除歷史包袱。即便是C++的反對(duì)者也許也很難找到理由說“我還是不用C++”。在我看來,一個(gè)真正從實(shí)踐意義上理性反對(duì)使用C++的人只有一個(gè)理由:C++的復(fù)雜性帶來的混亂抵消乃至超過了C++的抽象機(jī)制和庫(在他的特定項(xiàng)目中)帶來的好處。 #t#
值得注意的是,這里需要避免一個(gè)陷阱,就是一旦人們認(rèn)定了C++數(shù)據(jù)類型,那么這個(gè)理由就會(huì)“長(zhǎng)出自己的腳來”,即,就算我們拿掉C++的復(fù)雜性,他們可能也會(huì)堅(jiān)持還是不用C++,并為之找一堆理由。我假定你不是這樣的人。
不過,也許最可能的是他會(huì)說:“問題是我們今天用的C++并非如此(簡(jiǎn)潔),你的假設(shè)不成立?!笔堑模业募僭O(shè)不成立。但雖然我們無法消除復(fù)雜性,我們實(shí)際上是可以容易地避開復(fù)雜性,避短揚(yáng)長(zhǎng)的。這也是本文的要點(diǎn),容我后面再詳述。