當前位置:首頁 » 編程軟體 » 編譯系統如何分配位元組

編譯系統如何分配位元組

發布時間: 2022-11-25 17:22:44

A. 對於不同的系統,int,float,char等類型分配的位元組是不同的,請問有誰了解,謝謝!

float大多是4個位元組, char是1個位元組, int在16位編譯器為2位元組(如Turbo C 2.0), 在32位編譯器為4位元組.
要了解自己的C各類型多少位元組, 可以在程序中加一句看看:
printf("int(%d), float(%d), char (%d).\n", sizeof(int), sizeof(float), sizeof(char));

B. c語言結構體內存空間如何分配問題

看來你是64位的機器了,64位的機器是以8位元組來排的,比如你的char name[20]要佔20個位元組,那麼內存會分配3個內存塊(暫且這么理解),是24個位元組,而double 是佔了8個位元組,這個時候給char name[20] 分配的24個位元組還剩下4個位元組,已經存不下double了,所以又開辟了一個內存塊來存double,一共32個位元組。 你把double改為int, 你會發現是佔用了24個位元組空間。不知道你能不能理解

C. 若定義 int x [10];則 Turbo C編譯系統為該數組分配多少個位元組存儲單元

在C語言里,int c[10]只有10個單元,即c[0]~c[9],這一點是與VB不一樣的。
所以,是2*10=20個位元組的存儲單元。

D. 一個16位C編譯系統中整形占幾個位元組,怎麼算的

1 signed char 有符號的單位元組整數類型 1 -128~+127
2 short int 短整型 2 -32768~+32767
3 int 整型 4 -2147438648~+2147438647
4 long int 長整型 4 -2147438648~+2147438647
5 long long int 長長整型 8 -9223372036854775808~+-9223372036854775807

E. 為什麼c語言編譯系統對158L分配8個位元組,而對158分配4個位元組

你用的編譯器將 158L當做64位長整數看待了, 158作為整數處理,整數通常32位。
不同編譯器處理不同。

F. 在32位編譯系統里,設定義了下面的結構體類型和變數,變數x在內存中所佔的位元組數為_

在所有編譯系統中char大小是固定的,為1位元組,而在32位編譯系統中float類型大小為4位元組。

因此,x需要的位元組數是:

9+8+4+4=25。

但在32位編譯系統中,內存分配一般會對齊到雙字(即4位元組的整數倍)。

因此,實際為x分配的內存應該是28位元組。

下面是驗證:

G. C語言中系統既然不給常量分配存儲空間,那麼編譯系統又是如何"記憶"和使用常量的呢

耐心看完,你應該能明白了:
C語言中,常量和變數是放在不同的"段"(section)里,程序一旦載入,常量/變數自然都在內存里了。
常量和全程變數,放在初始化段。
局部變數,通常在棧里。
常量在程序載入時同時載入。

H. 系統為字元串常量hello在內存中分配幾個位元組

咨詢記錄 · 回答於2021-11-06

I. 常量128 在C語言中 VS2008編譯系統下 編譯系統給它分配幾個位元組的空間來存儲128這個整形常量

不知道你說的常量具體是什麼意思,
1:如果指的是#define a 128這種的話,系統是不會分配內存,在編譯時直接替換。當然,在C++中用const的話,當用到const變數時,會按照只讀變數的方式分配內存。
2:如果指一個普通的變數賦值a=128,就是4B的大小,默認有符號數。128存放在地址為&a的內存空間中。

熱點內容
交叉編譯優化 發布:2025-05-14 03:48:52 瀏覽:531
動圖在線壓縮 發布:2025-05-14 03:35:24 瀏覽:132
w7共享無法訪問 發布:2025-05-14 03:35:24 瀏覽:482
為什麼微信會出現賬號密碼錯誤 發布:2025-05-14 03:03:30 瀏覽:692
幻影腳本官網 發布:2025-05-14 03:01:13 瀏覽:826
servlet的webxml怎麼配置 發布:2025-05-14 02:51:46 瀏覽:772
怎麼取消手勢密碼 發布:2025-05-14 02:51:11 瀏覽:639
openvpn搭建vpn伺服器搭建 發布:2025-05-14 02:47:52 瀏覽:998
密碼忘了從哪裡找 發布:2025-05-14 02:39:09 瀏覽:548
我的世界什麼伺服器有前途 發布:2025-05-14 02:30:31 瀏覽:528