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

編譯系統如何分配位元組

發布時間: 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的內存空間中。

熱點內容
為什麼安卓手機安裝不了cpk 發布:2024-05-19 07:22:21 瀏覽:311
pythonempty 發布:2024-05-19 07:15:16 瀏覽:928
路由器虛擬伺服器搭建 發布:2024-05-19 07:15:15 瀏覽:997
方舟編譯器何時推送 發布:2024-05-19 07:15:10 瀏覽:597
魔獸世界自動釣魚腳本 發布:2024-05-19 06:43:07 瀏覽:495
cbs加密 發布:2024-05-19 06:29:56 瀏覽:201
ssis存儲過程 發布:2024-05-19 06:21:31 瀏覽:631
怎樣刪除小視頻文件夾 發布:2024-05-19 05:49:29 瀏覽:589
開啟php短標簽 發布:2024-05-19 05:44:12 瀏覽:473
android各國語言 發布:2024-05-19 05:42:54 瀏覽:247