1樓:沙裡波特
c語言: char i = 10;
要經過編譯,生成機器碼。
再由 cpu 執行。
i 這個變數,佔用乙個儲存單元。i是無符號數,其內容是:0000 1010。
int j = 128;
j 是整型。
佔用兩個儲存單元。
j是有符號數,將以補碼存放去看看《計算機原理》
組合語言》吧。
其實,學高階語言。
不用**這麼底層的知識。
2樓:計算機
char i = 10;
是乙個宣告變數語句,其定義了乙個字元變數i,並賦值為10.
這裡面沒有補碼和反碼。
3樓:網友
在系統為乙個程式分配的空間中,分成許多段,比如有**段,存放程式可執行**,有資料段,可以分配變數,有常量段,專門存放常量,是隻讀的。常量變數可以位於資料段中,仍然是變數,只是程式沒有改動許可權。在程式執行到main之前,系統負責將常量區儲存的常量賦值給常量。
4樓:海獅
這個是編譯原理的內容,是電腦科學的核心內容之一。如果想深入研究,建議學習編譯原理。學習之前需要具備一定的演算法基礎。
5樓:小麗話生活
c語言程式設計你看看。
c語言的基本型別在記憶體中怎麼儲存的?
6樓:信必鑫服務平臺
1、整型資料:所有整數(正負零)在記憶體中都是以補碼的形式存在。對於乙個正整數來說,它的補碼就是它的原碼本身。對於乙個負整數來說,它的補碼為原碼取反再加1。
2、字元型資料:把字元的相對應的ascii碼(整數,對映關係見ascii碼錶)放到儲存碼單元中,而這些ascii**值在計算機中同樣以二進位補碼的形式存放的。
3、實型資料:也叫浮點數,在計算機中也是以二進位的方式儲存,關鍵在於如何將十進位的小數轉化為二進位來表示。
c語言中,常量是存放在記憶體中嗎?
7樓:惠企百科
常量和變數是放在不同的"段"(section)裡,程式一旦載入,常量/變數自然都在記憶體裡。
在程式的執行過程中,把需要處理的資料存放在記憶體儲器中,稱始終保持不變的資料為「常量」,稱存放可變資料的儲存器單元為「變數」,其中的資料稱為變數的值。
整數是以補碼的形式轉換為二進位**儲存在計算機中。
實數是以ieee754標準轉回換為二進位代答碼儲存在計算機中。
字元本質實際也與整數的儲存方式相同(先通過ascii碼把字元轉換為對應的整數,再按整數以補碼形式轉換為二進位)。
c語言中的 區域性變數,儲存在什麼地方?
8樓:惠企百科
c語言中的區域性變數儲存在棧裡。
普通的區域性變數在棧空間上分配,這個區域性變數所在的函式被多次呼叫時,每次呼叫這個區域性變數在棧上的位置都不一定相同。區域性變數也可以在堆上動態分配(malloc),但是記得使用完這個堆空間後要釋放之。
在棧空間上分配時是要注意記憶體的,不能分配記憶體過大。如果棧內空間小於所申請的空間大小,那麼這時系統將揭示棧溢位,並給出相應的異常資訊。但是堆不一樣,堆可分配空間是很大的。
c語言中的 區域性變數,儲存在什麼地方?
9樓:行增嶽化鳥
棧區,或者cpu通用暫存器中!!!
不知道你對cpu有過了解麼???
cpu核心中會有乙個叫做sp的暫存器,存放著棧頂位址,所有區域性變數,和中間資料都在這裡存放,在乙個程式呼叫乙個函式,sp指標會增加該堆疊用到的所有臨時記憶體的長度,區域性變數也在其中,在函式退出時sp還原到原來的值,這樣被呼叫的函式用到的所有臨時資料也都釋放。。。
當然也會存在cpu的通用暫存器中,因為有些cpu工作暫存器數量較多,如果區域性變數不多,會直接放在暫存器內,而不是。
放到記憶體裡,這樣也提高了執行速度。。。記憶體賦值需要取位址和寫記憶體,本身步奏就多,而且記憶體操作沒有暫存器塊,所以如果工作暫存器夠用,是會存在工作暫存器(根據編譯器而定,當然編譯器考慮的通常很周全,會讓速度儘量快)
10樓:匿名使用者
一般情況下,區域性變數儲存在棧區。
static修飾的區域性變數會儲存在堆區。
棧區的變數隨時可能會被釋放掉。
11樓:網友
區域性變數儲存在棧裡;堆裡存放的是動態分配的記憶體,有malloc()分配。
12樓:it孤鶩
一般儲存的暫存器裡面。
13樓:網友
區域性棧區,或者cpu暫存器裡面。
c語言中全域性變數存放在記憶體空間中那個位置
14樓:情投意合張老師
在 c 語言中,記憶體分配方式有以下三種形式:
1、從靜態儲存區域分配。
由編譯器自動分配和釋放,在程式編譯的時候就已經分配好記憶體,這塊記憶體在程式的整個執行期間都存在,直到整個程式執行結束時才被釋放,如全域性變數與 static 變數。
2、在棧上分配。
同樣由編譯器自動分配和釋放,在函式執行時,函式內部的區域性變數都可以在棧上建立,函式執行結束時,這些儲存單元將則被自動釋放。
需要注意的是,棧記憶體分配運算內建於處理器的指令集中,它的執行效率一般很高,但是分配的記憶體容量有限。
3、從堆上分配。
也稱為動態記憶體分配,由程式設計師手動完成申請和釋放。程式在執行的時,由程式設計師使用記憶體分配函式(如 malloc 函式)來申請記憶體,使用完之後再由程式設計師自己負責使用記憶體釋放函式(如 free 函式)來釋放記憶體。
需要注意的是,如果在堆上分配了記憶體空間,就必須及時釋放它,否則將會導致執行的程式出現記憶體洩漏等錯誤。
在 c 語言中,不同型別變數的儲存位置和作用域也有所不同。
全域性變數。從靜態儲存區域分配,其作用域是全域性作用域,也就是整個程式的生命週期內都可以使用。如果程式是由多個原始檔構成的,那麼全域性變數只要在乙個檔案中定義,就可以在其他所有的檔案中使用,但必須在其他檔案中通過使用extern關鍵字來宣告該全域性變數。
全域性靜態變數。
從靜態儲存區域分配,其生命週期也是與整個程式同在的,從程式開始到結束一直起作用。與全域性變數不同的是,全域性靜態變數作用域只在定義它的乙個原始檔內,其他原始檔不能使用。
區域性變數。從棧上分配,其作用域只是在區域性函式內,在定義該變數的函式內,只要出了該函式,該區域性變數就不再起作用,也即該變數的生命週期和該函式同在。
區域性靜態變數。
從靜態儲存區域分配,其在第一次初始化後就一直存在直到程式結束。該變數的特點是其作用域只在定義它的函式內可見,出了該函式就不可見了。
15樓:天雲小店
全域性變數存放在全域性靜態儲存區。
使用者儲存空間可以分為三個部分:
1、程式區。
程式區主要用來存放使用者編寫的源**。
2、靜態儲存區。
全域性變數存放在靜態儲存區,在程式開始執行時給全域性變數分配儲存區,程式行完畢就釋放。在程式執行過程中它們佔據固定的儲存單元,而不動態地進行分配和釋放。
3、動態儲存區。
動態儲存區存放以下資料:
1) 函式形式引數;
2) 自動變數(未加static宣告的區域性變數);
3) 函式呼叫實的現場保護和返回位址;
16樓:雲澹楓卿
**區 函式**。
靜態儲存區 全域性變數、靜態變數。
堆區(heap) 動態記憶體。
棧區(stack) 區域性變數、函式形參等所以在靜態儲存區。
17樓:網友
存放在記憶體靜態儲存區。
18樓:晨曦月殤
全域性變數是程式設計術語中的一種,源自於變數之分。
變數分為區域性與全域性,區域性變數又可稱之為內部變數。由某物件或某個函式所建立的變數通常都是區域性變數,只能被內部引用,而無法被其它物件或函式引用。
全域性變數既可以是某物件函式建立,也可以是在本程式任何地方建立。全域性變數是可以被本程式所有物件或函式引用。乙個區域性變數在被其它物件引用時,會是乙個空值。
但全域性變數卻不會出現這種情況。
全域性變數全部存放在靜態儲存區,在程式開始執行時給全域性變數分配儲存區,程式行完畢就釋放。在程式執行過程中它們佔據固定的儲存單元,而不動態地進行分配和釋放;
19樓:黎永泉
記憶體中哪個位置,還不夠具體……
c語言常量變數在記憶體中的儲存方式
20樓:啥玩意兒
從靜態儲存區域分配:記憶體在程式編譯的時候就已經分配好,這塊記憶體在程式的整個執行期間都存在。例如全域性變數,static變數。
在棧上建立(位址從大到小):在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內建於處理器的指令集中,效率很高,但是分配的記憶體容量有限。
棧上的變數都具有臨時變數的特性)
c語言是怎麼經過轉換將變數的值儲存在記憶體中的?
21樓:網友
c語言編譯器負責將源**中的十進位的10翻譯成4位元組資料:0a(16進位)(實際儲存為二進位,但描述起來太長不方便一般用16進位顯示和描述),而乙個位元組的10實際上的二進位就是你說的00001010。
實際上在處理儲存之前需要先分配乙個記憶體給變數 i,並在編譯環境中註冊登記這個變數名-位址關係(變數表),方便後續**訪問此變數時匹配到該位址,比如遇到 i=i+2時,編譯器就會生成乙個指令對該位址的值進行+2操作。此外還需要生成乙個mov指令**指揮cpu執行:資料儲存到該位址。
如果你對編譯後的細節感興趣,可以在除錯時按ctrl+alt+d(vs的快捷鍵,也可以通過選單導航到「除錯-視窗-反彙編」,其他編譯器在除錯選單中找)切換到反彙編視窗檢視編譯結果,系統會逐條顯示每一條語句對應的彙編指令。
當你對彙編指令感到好奇之後,可以看看彙編、編譯原理、8086 cpu原理、以及數位電路的解碼器 等書籍,不需要完全看懂,瞭解下會對你學習任何程式語言有幫助,不僅僅侷限於c語言。
22樓:網友
如果你要弄明白必須學兩門課:計算機原理和組合語言,這個簡單兩句說不清楚。
c語言陣列在記憶體中是怎麼分配的,c語言中二維陣列在記憶體中是按什麼優先存放的?
c語言中記憶體為分三類 棧區 堆區 靜態資料區。區域性變數在棧上分配,函式呼叫前的棧指標,要和函式返回後的棧指標一樣,否則就會出錯。void test void char i,a 10 printf 0x x i printf 0x x a printf 0x x a 1 printf 0x x a...
C語言中常量在記憶體中的儲存形式怎麼表示
濯友瑤肇螺 1 整數是以補碼的形式轉換為二進位制 儲存在計算機中。實數是以ieee754標準轉換為二進位制 儲存在計算機中。字元本質實際也與整數的儲存方式相同 先通過ascii碼把字元轉換為對應的整數,再按整數以補碼形式轉換為二進位制 2 char型常量 字元 在計算機中是按其ascii值進行儲存,...
C語言中,如何表示變數的n次方,C語言中,如何表示一個變數的n次方?
圭仁丘妍 c語言中計算一個數的n次方可以用庫函式pow來實現。函式原型 double pow double x,double y 如下 include include intmain 注 使用pow函式時,需要將標頭檔案 include包含進原始檔中。擴充套件資料 其他方法表示一個數的n次方 inc...