首先介紹一下sizeof這個特殊運算符, sizeof是用來計算數據在內存中所佔內存空間大小的運算符(針對數據類型而言),它的返回類型是size_t類型,size_t是一個無符號整數類型。size_t在不同的操作系統中所佔位數可能不同,但是size_t類型一定是無符號類型。
int類型分爲int型常量和int型變量。int類型在內存中站四個字節,在16位操作系統下是兩個字節,在32位操作系統下是四個字節,在64位操作系統下依然是四個字節大小的空間。
int a;//表示在內存中開闢一個4個字節大小的空間
a = 10;//在開闢的空間中存儲常量10
printf輸出Int類型
size_t size = sizeof(int);
printf("%d\n",size);//按十進制打印一個整數
printf("%x\n",size);//按十六進制打印一個整數
printf("%X\n",size);//按十六進制打印一個整數,和%x的區別是打印ABCDE還是abcde.
printf("%o\n",size);//按八進制打印一個整數
short,long,long long,unsigned int
在32位系統中:
short 是兩個字節,long和int一樣是四個字節,long long是八個字節
在64位操作系統下:
int是4個字節,long在大多數系統下是8個字節
unsigned int;//無符號整數
unsigned long;//無符號長整數
unsigned short;//無符號短整數
9l,9L,9ll,9LL,9u,9U,9ull,9ULL
9l,9L表示長整型常量9,9ll和9LL表示long long型整數9,9u和9U表示無符號常量9,9ull和9ULL表示無符號long long型整數
整數溢出:當把一個數據類型較大的數賦值給一個數據類型所佔內存空間較小的數時就會造成數據溢出。
int i = 0x12345678;//i佔4個字節內存空間
short a = i;//a佔2個字節內存空間
上面的代碼就造成了整數溢出。整數溢出的結果就是將原有的數據的高位拋棄,只將低位保留。
·char類型包括char常量和char變量。char類型在內存中佔一個字節空間大小。
char在內存中,有符號最大7f,無符號最大ff(unsigned char)。char的本質就是一個字節(BYTE)。