編譯系統如何分配位元組
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的內存空間中。