歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

C語言常見類型占用字節數

前言

最近筆試經常遇到C語言各類型變量所占字節數的問題,這裡做一個總結好了。

類型

常見的有char、int、long、short、float、double及指針等.

字符類型

這裡單只char,char變量在內存中存儲的是字符對應的ASCII碼值。所以長度也是固定的,為1個字節。

整數類型

查了資料發現對各個類型的整數占用字節數是有一個規定的,雖然16位32位或者64位的機子各種類型所占用的長度並不一樣。規則如下:

  • short 至少占用2個字節。
  • int 建議為一個機器字長。32位環境下機器字長為4字節,64位環境下機器字長為8字節。
  • short 的長度不能大於 int,long 的長度不能小於 int。

所以說,short並不一定短,long並不一定短,有可能都和int一樣長。

浮點數(小數)

C中浮點數有兩種,float和double,不像整數,小數的長度始終是固定的,float占用4個字節,double占用8個字節。

指針

C中指針即為地址,所以編輯器的尋址空間則是指針的地址范圍。所以指針變量在32位機器的尋址空間為2^32,要將所有地址都表示出來則需要為4個字節長度,所以要占用4個字節長度。同理64位的編譯器則需要8個字節長度。

查看所占用的長度

可以使用sizeof()來查看所占用的長度,如下:

#include <iostream>
#include <vector>
using namespace std;


int main(int argc, const char * argv[]) {
    // insert code here...
    
    char *p;
    cout<<"char: "<<sizeof(char)<<endl;
    cout<<"int: "<<sizeof(int)<<endl;
    cout<<"short: "<<sizeof(short)<<endl;
    cout<<"long: "<<sizeof(long)<<endl;
    cout<<"*: "<<sizeof(p)<<endl;
    cout<<"float: "<<sizeof(float)<<endl;
    cout<<"double: "<<sizeof(double)<<endl;
    
    return 0;
}

輸出結果如下:

char: 1
int: 4
short: 2
long: 8
*: 8
float: 4
double: 8

Copyright © Linux教程網 All Rights Reserved