對.
類型名 變數位元組 取值范圍
[singned]char 1 -128~127
ungsigned char 1 0~255
[singned] long int 4 -2147483648~2147483647
unsiged long [int] 4 0~4294967295
float 4 -3.4E38~3.4E38 7個有效位
double 8 -1.7E308~1.7E308 15個有效位
㈡ C語言數據類型的存儲空間長度排序
這道題本身就是沒有意義的
而且稍微誤人
不信,你自己用sizeof輸出試試
換個機器
或者操作系統
或者編譯器
他就有可能不同
你看看我跑的結果
你說你這題有意義嗎
計算機是個技術行業,
不是理論學
死拜理論,學傻了
㈢ C語言的內存地址是按什麼順序排列的:比如是按從大到小還是內存自動分配的,請舉例
您問的具體是什麼?
(1)是地址編號和集成電路裡面(用顯微鏡看)各個單元的位置次序之間的關系?
(2)還是問程序中各個指令代碼執行的次序和地址編號之間的關系?
(3)還是問程序中各個變數的次序和地址編號之間的關系?
如果是(1),那麼
集成電路裡面各個單元的位置次序,一般是不公開的。所以人們不知道它的次序是從左到右還是從右到左還是別的方式。據說,現在的布局大多是交叉分散排列的,因為程序中經常出現連續訪問連續地址的操作,如此分散排列,可以使功耗分散,減小局部溫升,延長器件壽命。
如果是(2),那麼
一般的指令,除了跳轉指令和調用、返回指令以外,普通指令都是按照地址連續增加的次序,連續排列的。而且,匯編語言中書寫程序清單的次序,除了使用特殊偽指令規定地址(如ORG指令)處以外,都是按照地址編號連續增加的次序書寫的。如此,除跳轉、調用、返回指令外,書寫的次序就是執行的次序。
如果是(3),那麼
用匯編語言設計程序時,你可以隨自己習慣,覺得怎麼安排方便,就怎麼安排。
如果是高級語言,那麼,不同的編譯程序,可以有所不同。
不過,如果是C語言,那麼數組內部各個下標變數的地址,必須是按照下標由小到大地址也由小到大的次序連續安排。這是因為,C語言中,對指針的運算有嚴格規定。
例如p是指向整數的指針,則p+2就應該等於指向p所指的整數變數後面第二個整數變數的指針。於是(p+2)相應的物理地址,就應該等於p相應的物理地址加上2倍int變數的長度。 而對於數組,又是按照指針的概念來規定的。例如:a[2]就和*(a+2)完全等效。
㈣ c語言中數據佔用存儲空間從小到大
數據類型對應的位元組數:
32位編譯器:-----------------------------------------
char 1 位元組
short int 2 位元組
int 4 位元組
unsigned int 4 位元組
float 4 位元組
double 8 位元組
long 4 位元組
long long 8 位元組
char* 4 位元組
64位編譯器:----------------------------------------
char 1 位元組
short int 2位元組
int 4 位元組
unsigned int 4 位元組
float 4位元組
double 8 位元組
long 8 位元組
long long 8 位元組
unsigned long 8 位元組
char* 8 位元組
㈤ C語言中(以16位PC機為例),各數據類型的存儲空間長度的排列順序為( )
A
在16位系統下:
char 1位元組
int 2位元組
long 4位元組
float 4位元組
double 8位元組
㈥ c語言中的五種基本數據類型char,int,long int,float,double的儲存空間長度排序是怎麼樣的
char
1位元組
float
4位元組
double
8位元組
至於int
看編譯器,16位的2位元組,
32位和64位的
佔4位元組
long
16位和32位
4位元組,
64位的
有的4位元組有的8位元組。
㈦ 在C語言中,二維數組元素在內存中的存放順序是 A按行存放 B按列存放 C由用戶自己定義 D由編譯器決定
c語言中,二維數組元素在內存中是按行存放的。
二維數組本質上是以數組作為數組元素的數組,即「數組的數組」,類型說明符 數組名[常量表達式][常量表達式]。二維數組在概念上是二維的,即是說其下標在兩個方向上變化, 下標變數在數組中的位置也處於一個平面之中, 而不是象一維數組只是一個向量。
但是,實際的硬體存儲器卻是連續編址的, 也就是說存儲器單元是按一維線性排列的。如何在一維存儲器中存放二維數組,可有兩種方式:一種是按行排列, 即放完一行之後順次放入第二行。另一種是按列排列, 即放完一列之後再順次放入第二列。在C語言中,二維數組是按行排列的。
例如:float a[3][4],b[5][10]; 定義a為3*4(3行4列)的數組,b為5*10(5行10列)的數組。注意,不能寫成 float a[3,4],b[5,10]; 具體可以表示:a[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12} }
(7)c語言存儲空間排列擴展閱讀:
1、表示方法:
數組元素也是一種變數, 其標識方法為數組名後跟一個下標。下標表示了元素在數組中的順序號。數組元素的一般形式為:數組名[下標] 其中的下標只能為整型常量或整型表達式。如為小數時,C編譯將自動取整。例如,a[5],a[i+j],a[i++]都是合法的數組元素。數組元素通常也稱為下標變數。必須先定義數組, 才能使用下標變數。
2、賦值方法:
初始化賦值的一般形式為:static類型說明符數組名[常量表達式]={值,值……值}; 其中static表示是靜態存儲類型, C語言規定只有靜態存儲數組和外部存儲數組才可作初始化賦值。在{ }中的各數據值即為各元素的初值, 各值之間用逗號間隔。例如:static int a[10]={ 0,1,2,3,4,5,6,7,8,9 }; 相當於a[0]=0;a[1]=1...a[9]=9;
3、使用規則:
一、數組的類型實際上是指數組元素的取值類型。對於同一個數組,其所有元素的數據類型都是相同的。
二、數組名的書寫規則應符合標識符的書寫規定。
三、數組名不能與其它變數名相同。
四、可以只給部分元素賦初值。當{ }中值的個數少於元素個數時,只給前面部分元素賦值。例如:static int a[10]={0,1,2,3,4};表示只給a[0]~a[4]5個元素賦值,而後5個元素自動賦0值。
五、只能給元素逐個賦值,不能給數組整體賦值。例如給十個元素全部賦1值,只能寫為:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能寫為:static int a[10]=1;(請注意:在C、C#語言中是這樣,但並非在所有涉及數組的地方都這樣,資料庫是從1開始。)
六、若不給可初始化的數組賦初值,則全部元素均為0值。
七、假如給全部元素賦值,則在數組說明中, 可以不給出數組元素的個數。例如:static int a[5]={1,2,3,4,5}; 可寫為:static int a[]={1,2,3,4,5};動態賦值可以在程序執行過程中,對數組作動態賦值。這時可用循環語句配合scanf函數逐個對數組元素賦值。
參考資料來源:網路-二維數組
網路-數組
㈧ C語言中結構體成員地址在內存中是如何排列的
一般都是按照變數定義的順序,然後考慮4位元組對齊在不同變數間留空排列的
㈨ 在C語言中5種基本數據類型的存儲空間長度的排列順序
分類: 電腦/網路 >> 程序設計 >> 其他編程語言
問題描述:
在C語言中,5種基本數據類型的存儲空間長度的排列順序為:____A_
A、char<int<long int <=float<double
B、char=int<long int <=float<double
C、char<int<long int=float=double
D、char=int=<long int <=float<double
我選則A對么?
為什麼?
解析:
對.
類型名 變數位元組 取值范圍
[singned]char 1 -128~127
ungsigned char 1 0~255
[singned] long int 4 -***********~***********
unsiged long [int] 4 0~***********
float 4 -3.4E38~3.4E38 7個有效位
double 8 -1.7E308~1.7E308 15個有效位