C和C++中的整形数据类型
數據類型是編程中碰到的一個最基本問題,下面我們來理解數據類型的實現。
首先各種數據類型是如何實現的,比如int,比如long。
首先介紹數據類型相關的一個概念,32位計算機或者64位計算機。計算系統本身是有其特點的,比如32位的系統,64位的系統等。他們之間的差別就是數據寬度的差別,對于32/64位的系統,寄存器大小是32/64位的,CPU訪問內存時,一次可讀取的數據也是32/64位的。但是這些并不構成數據類型的差別。 數據類型事實上是編程語言中的概念。比如匯編語言中的類型是單字節類型、雙字節類型、4字節類型等;而C語言中定義int, long,short等;Java中會定義Object等高級類型。這里我們只介紹基本數據類型。雖然匯編語言比C語言更底層,但那并不意味著C語言中的類型可以一一映射到匯編語言的數據類型(雖然沒有很相似)。C語言定義了一些標準數據類型:int, short, long等,具體的可以參考http://en.wikipedia.org/wiki/C_data_types。 但是這些類型并不是固定size的,只是有一些約定:long long? is not smaller than long, which is not smaller than int, which is not smaller than short。這樣就造成一些混亂,比如說long的size是多少呢?這個不一定,不同的編譯器,不同的機器上得到的結果是不一樣的。比如,在MacOSX+XCode上,如果按照64位編譯,它是64bit的;如果按照32位編譯,它是32bit的;而在Windows上,使用VS編譯,不論如何編譯它都是32bit的。(這是由64bit 的data model決定的:http://en.wikipedia.org/wiki/64-bit#64-bit_data_models )。在C99中引入了一些變化,包括一個新的頭文件stdint.h。其中定義了若干新的數據類型,這些類型就不再是不固定size的。在類型的名稱中就包含了它的size,比如:uint64_t,int_least8_t等。
轉載于:https://www.cnblogs.com/whyandinside/archive/2012/01/29/2331167.html
總結
以上是生活随笔為你收集整理的C和C++中的整形数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]消息队列软件大比拼
- 下一篇: distcc源码研究三