c語言中intchar和shortint三種型別變數所佔用

2021-03-27 09:20:25 字數 4469 閱讀 7888

1樓:匿名使用者

c語言中,int, char和short int三種型別變數所佔用的記憶體大小因機器的不同有所不同。

一般在32位及以上機器上,int佔四位元組,char佔一位元組,short佔2位元組。

可以通過sizeof()命令獲取本機器上的各型別的佔記憶體的大小,參考**如下:

#include

void main()

2樓:匿名使用者

int 四個位元組,char一個位元組,short int 兩個位元組vc++編譯器下,可用以下**測試:

#include

int main()

3樓:匿名使用者

分別佔4,1,2,int的大小與編譯器有關,有時可能也佔2位元組

4樓:苦孩子

在vc中是4,1,2

不同的編譯器可能佔不同記憶體

5樓:匿名使用者

似乎是跟編譯器有關,一般int 4個位元組,short int 2位元組,char 1個位元組

6樓:匿名使用者

32位計算機下分別是4,1,2位元組

7樓:shine過客_驛站

32位的計算機的話 依次就是4 1 2 16位的計算機的話 依次就是 2 1 1

8樓:wlc天使的眼淚

可以用sizeof(int )自己試試

在c語言中,int,char和short三種型別資料在記憶體中所佔的位元組數 40

9樓:蔣金多多多

總結一下哈

:針對bai大部分du32位機器來說所佔記憶體是:zhi char 字元型dao 1個;int整型2 個;short 2 個;但是,不同專的屬機器,和不同的編譯軟體下,都會不同。

所以你可以用sizeof()函式測試一下。例sizeof(char);

這裡補充下我的答案,之前回答這個問題時候,自己還是一名微控制器開發愛好者,c51微控制器中的int確實是16位,兩個位元組。

而現在的我從事應用軟體開發,在這些編譯器中(比如vs、gcc),int一般都是4位的(無論32位還是64位)。事實上,一個比較官方的解釋是:編譯器可以根據自身硬體來選擇合適的大小,但是需要滿足約束:

short和int型至少為16位,long型至少為32位,並且short型長度不能超過int型,而int型不能超過long型。這即是說各個型別的變數長度是由編譯器來決定的。

10樓:

16位編譯bai器

char :1個字

du節zhi

char*(即指標變數): 2個字dao節回short int : 2個位元組

int: 2個位元組

unsigned int : 2個位元組

float: 4個位元組

double: 8個位元組

long: 4個位元組

long long: 8個位元組

unsigned long: 4個位元組

32位編譯器

答char :1個位元組

char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)

short int : 2個位元組

int: 4個位元組

unsigned int : 4個位元組

float: 4個位元組

double: 8個位元組

long: 4個位元組

long long: 8個位元組

unsigned long: 4個位元組

64位編譯器

char :1個位元組

char*(即指標變數): 8個位元組

short int : 2個位元組

int: 4個位元組

unsigned int : 4個位元組

float: 4個位元組

double: 8個位元組

long: 8個位元組

long long: 8個位元組

unsigned long: 8個位元組

11樓:匿名使用者

理論像樓上說的這樣,實際上int型變數要看機器32位和64位機器是不同的,你可以用

sizeof()函式測試一下

12樓:六閒村

字元型 char 1 位元組

整型 int 2 位元組zhishort 2 位元組

長整dao型 long 4 位元組單精回度答 float 4 位元組雙精度 double 8 位元組

13樓:

完全同意二樓的說法。不同的機子位數是不一樣的!

在c語言中,int,char,short三種型別資料在記憶體中所佔的位元組數由什麼決定

14樓:蔣金多多多

總結一下哈:針對大部分32位機器來說所佔記憶體是: char 字元型 1個;int整型2 個;short 2 個;但是,不同的專機屬器,和不同的編譯軟體下,都會不同。

所以你可以用sizeof()函式測試一下。例sizeof(char);

這裡補充下我的答案,之前回答這個問題時候,自己還是一名微控制器開發愛好者,c51微控制器中的int確實是16位,兩個位元組。

而現在的我從事應用軟體開發,在這些編譯器中(比如vs、gcc),int一般都是4位的(無論32位還是64位)。事實上,一個比較官方的解釋是:編譯器可以根據自身硬體來選擇合適的大小,但是需要滿足約束:

short和int型至少為16位,long型至少為32位,並且short型長度不能超過int型,而int型不能超過long型。這即是說各個型別的變數長度是由編譯器來決定的。

15樓:匿名使用者

通常char佔1個位元組,short佔2個位元組。原因是,1個位元組可以表示一個ascii碼,為了提高計算機的數版據處理權能力,short用一個位元組遠遠不足,但限於早年的儲存器體積和**,用2個位元組也是不得以的事情。現在,儲存器的體積不再是考慮的因素,**也不是「事」,cpu的資料暫存器已經是64位(8個位元組),32位的cpu已近末日黃昏,所以short用8個位元組表示不再是夢。

所謂64位的cpu,指的就是其資料暫存器(包括指令暫存器)的寬度是64bits,一次讀取、儲存64bits最為快捷,這就是int型別資料的標準寬度。

16樓:匿名使用者

一般來說

int 4位元組

char 1位元組

short 2位元組

由編譯器決定的,編譯器會根據系統平臺自己改變資料型別的取值範圍。

17樓:匿名使用者

理論像樓上說的這樣,實際上int型變數要看機器32位和64位機器是不同的,你可以用

sizeof()函式測試一下

18樓:

16位編譯器

char :1個字

節char*(即指標變數): 2個位元組專

屬short int : 2個位元組

int: 2個位元組

unsigned int : 2個位元組

float: 4個位元組

double: 8個位元組

long: 4個位元組

long long: 8個位元組

unsigned long: 4個位元組

32位編譯器

char :1個位元組

char*(即指標變數): 4個位元組(32位的定址空間是2^32, 即32個bit,也就是4個位元組。同理64位編譯器)

short int : 2個位元組

int: 4個位元組

unsigned int : 4個位元組

float: 4個位元組

double: 8個位元組

long: 4個位元組

long long: 8個位元組

unsigned long: 4個位元組

64位編譯器

char :1個位元組

char*(即指標變數): 8個位元組

short int : 2個位元組

int: 4個位元組

unsigned int : 4個位元組

float: 4個位元組

double: 8個位元組

long: 8個位元組

long long: 8個位元組

unsigned long: 8個位元組

19樓:六閒村

字元型 char 1 位元組

整型 int 2 位元組

short 2 位元組

長整型 long 4 位元組

單精度 float 4 位元組

雙精度 double 8 位元組

20樓:匿名使用者

是由c語言編譯器來決定的!

C語言中c m和c m的區別,C語言中 「 c m」和「c m」的區別是什麼?

是取址運算bai符,取變數在內du存單元中的首zhi地址dao,取地址運算子的操作物件必須專是記憶體單元 如變數 數屬組元素等 是間接訪問運算子,間接訪問指標所指向的物件,運算子的操作物件必須是指標 地址 因此 c m是把m在記憶體中的地址賦給c這個指標指向的變數c m是把m的地址賦給c這個指標 1...

c語言中作用C語言中作用

取決於在scanf中使用還是在printf中使用。在scanf中使用,則新增了 的部分會被忽略,不會被引數獲取。例如輸入為 12 abc那麼12將會讀取到變數a中,但是後面的abc將在讀取之後拋棄,不賦予任何變數 例如這裡的字元陣列b 在printf中使用,表示用後面的形參替代的位置,實現動態格式輸...

請問C語言中,1,請問C語言中,

是求餘數的意思,a b也就是a除以b餘幾 1 2 0餘1,那1 2 1 這裡 是取餘數的意思 1除以2 餘數就是1咯 計算步驟的話。cpu有直接的整數除法指令,商和餘數分別放在不同的暫存器裡。這些都交給編譯器了,我們不用理了 取模運算。也就是1除2的餘數?結果 1 除數是2的時候很特殊.a 2 等同...