1. 程式人生 > >char、short、long、double佔幾個位元組,32位機中

char、short、long、double佔幾個位元組,32位機中

char佔1位元組,short佔 2 位元組,int 、float、long 都佔 4 位元組,double 佔8 位元組

指標長度和地址匯流排有關。因為指標記錄的就是一個地址,那麼32位的就是4位元組,64位的就是8位元組。

發現一個問題,以下程式碼是在win10 64位系統下跑的,理應來說int佔8個位元組,後來我想錯了;我建立的工程是win32控制檯應用,意味著編譯器就是32位的–“int佔多少個位元組既由編譯器決定,也由CPU或虛擬機器或作業系統決定,但歸根結底是由編譯器決定。”

64位win10下,codeblocks win32 控制檯下

#include “iostream”
using namespace std;

int main()
{
double *p = NULL;
cout<<sizeof(char)<<endl;
cout<<sizeof(short)<<endl;
cout<<sizeof(int)<<endl;
cout<<sizeof(float)<<endl;
cout<<sizeof(long)<<endl;
cout<<sizeof(double)<<endl;
cout<< sizeof(char *) << sizeof(short *) << sizeof(int *) << sizeof§ << sizeof(double *)<<endl;
return 0;
}

結果為:

1
2
4
4
4
8
44444

由上可知,char佔1位元組,short佔 2 位元組,int 、float、long 都佔 4 位元組,double 佔8 位元組,任意型別的指標都佔4個位元組;

作者:Junekiler
來源:CSDN
原文:https://blog.csdn.net/junekiler/article/details/52518336