先來列一下c++的資料型別:
整型:int,long。這兩個還分signed(有符號)和unsigned(無符號)的,當然有符號和無符號所佔位元組大小是一樣的,就不管他了。
布林型:bool
字元型:char,這兩個還分signed(有符號)和unsigned(無符號)的,不過沒多大用,用在轉化為數值時就用區別。
浮點型:float,double,long double。
這只能上**驗證了,貌似機子不同資料型別所佔大小也不同,太威武了,我就檢查下我這個32位windows系統電腦吧。我用的ide是code::blocks,發現挺好用的,主要是工程檔案小,不像vs2010建個工程就大得很,哥這小硬碟吃不消啊(題外話)。
先看整型的吧,**如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include
using
namespace
std;
int
main()
結果顯示:
int:4
long:4
int和long都是佔4個位元組(即32位)。
其他資料型別驗證吧上面**資料型別替換下就是了,得出下面的結果:
bool:1
char:1
wchar_t:2
float:4
double:8
特別要注意的時,對於指標型別,都佔4個位元組,指標指向的是乙個位址,位址是int型別的,32位作業系統就是4位元組。當然如果是64位作業系統那就是8位元組了。
此外,int這個型別佔作業系統乙個記憶體單元大小。早先16位作業系統乙個記憶體單元是16位,所以是2個位元組;32位系統乙個記憶體單元是是32位,所以是4位元組;64位作業系統乙個記憶體單元是16位,故佔8個位元組。
另外還需要注意,以下情況為影響分配情況:
1、函式所佔位元組
2、記憶體變數對齊方式
詳情請看下兩篇文章
C 資料型別所佔位元組大小
對於指標型別,因為指標指向的是乙個位址,32位作業系統就是4位元組。64位作業系統那就是8位元組了。int這個型別佔作業系統乙個記憶體單元大小。早先16位作業系統乙個記憶體單元是16位,所以是2個位元組 32位系統乙個記憶體單元是是32位,所以是4位元組 64位作業系統,4位元組。整形加unsign...
C語音中資料型別所佔位元組數
和機器字長及編譯器有關係 所以,int,long int,short int的寬度都可能隨編譯器而異。但有幾條鐵定的原則 ansi iso制訂的 1 sizeof short int sizeof int 2 sizeof int sizeof long int 3 short int至少應為16位...
C語言奇妙之旅 資料型別
找程式錯誤。include int main 其中 int main 寫錯了,應該是 int main 要注意區分大小寫!break是關鍵字 所以會報錯 printf s break 應該寫成printf s break 注意一定是英文本元 每個資料型別的位元組在每個編譯器都不一樣,所以我不會去寫,...