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