語言存儲階段
Ⅰ C語言的基本類型在內存中怎麼儲存的
1、整型數據:所有整數(正負零)在內存中都是以補碼的形式存在。對於一個正整數來說,它的補碼就是它的原碼本身。對於一個負整數來說,它的補碼為原碼取反再加1。
2、字元型數據:把字元的相對應的ASCII碼(整數,映射關系見ASCII碼表)放到存儲碼單元中,而這些ASCII代碼值在計算機中同樣以二進制補碼的形式存放的。
3、實型數據:也叫浮點數,在計算機中也是以二進制的方式存儲,關鍵在於如何將十進制的小數轉化為二進制來表示。
(1)語言存儲階段擴展閱讀
C語言存儲數據使用注意事項
C語言中(包括C++/Java)實際存儲浮點數都不是這樣直接存儲「整數二進制+小數二進制」就完事的,這只是第一步。轉化二進制以後還要進行處理,實際的存儲標準是IEEE754
遇見一直「乘不凈」的浮點數,最終能取多少位取決於編譯器對應的浮點類型數據的分配位元組,位元組數越多越精確。故double要比float精確不僅僅是整數部分上限更高,小數部分也能取到更低的位數,故而更精確。
盡量避免大的浮點數和小浮點數運算,由於浮點數存儲的特點,常常會使小的浮點數丟失且判斷兩個浮點數或一個浮點數和整數,常量是否相等,使用abs(x-y)<0.000001這種形式。
Ⅱ C語言數據文件有幾種存儲方式每種存儲形式各有什麼特點
一、auto auto稱為自動變數。 局部變數是指在函數內部說明的變數(有時也稱為自動變數)。用關鍵字auto進7行說明, 當auto省略時, 所有的非全程變數都被認為是局部變數, 所以auto實際上從來不用。 局部變數在函數調用時自動產生, 但不會自動初始化, 隨函數調用的結束, 這個變數也就自動消失了, 下次調用此函數時再自動產生, 還要再賦值, 退出時又自動消失。 二、static static稱為靜態變數。根據變數的類型可以分為靜態局部變數和靜態全程變數。 1. 靜態局部變數 它與局部變數的區別在於: 在函數退出時, 這個變數始終存在, 但不能被其它、函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變數一樣。 2. 靜態全程變數 Turbo C2.0允許將大型程序分成若干獨立模塊文件分別編譯, 然後將所有模塊的目標文件連接在一起, 從而提高編譯速度, 同時也便於軟體的管理和維護。靜態全程變數就是指只在定義它的源文件中可見而在其它源文件中不可見的變數。它與全程變數的區別是: 全程變數可以再說明為外部變數(extern), 被其它源文件使用,而靜態全程變數卻不能再被說明為外部的, 即只能被所在的源文件使用。 三、extern extern稱為外部變數。為了使變數除了在定義它的源文件中可以使用外, 還要被其它文件使用。因此, 必須將全程變數通知每一個程序模塊文件, 此時可用extern來說明。 四、register register稱為寄存器變數。它只能用於整型和字元型變數。定義符register說明的變數被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變數那樣存儲在內存中, 這樣可以提高運算速度。但是Turbo C2.0隻允許同時定義兩個寄存器變數,一旦超過兩個, 編譯程序會自動地將超過限制數目的寄存器變數當作非寄存器變數來處理。因此, 寄存器變數常用在同一變數名頻繁出現的地方。另外, 寄存器變數只適用於局部變數和函數的形式參數, 它屬於auto型變數,因此, 不能用作全程變數。定義一個整型寄存器變數可寫成: register int a;
Ⅲ 數據控制語言的系統存儲過程
系統存儲過程是SQLServer系統創建的存儲過程,它的目的在於能夠方便地從系統表中查詢信息,或者完成與更新資料庫表相關的管理任務或其它的系統管理任務。系統存儲過程可以在任意一個資料庫中執行。系統存儲過程創建並存放於系統資料庫master中,並且名稱以sp_或者xp_開頭。
系統存儲過程的部分示例如下:
sp_addtype:用於定義一個用戶定義數據類型。
sp_configure:用於管理伺服器配置選項設置。
xp_sendmail:用於發送電子郵件或尋呼信息。
sp_stored_proceres:用於返回當前資料庫中的存儲過程的清單。
sp_help:用於顯示參數清單和其數據類型。
sp_depends:用於顯示存儲過程依據的對象或者依據存儲過程的對象。
sp_helptext:用於顯示存儲過程的定義文本。
sp_rename:用於修改當前資料庫中用戶對象的名稱。
Ⅳ C語言-存儲期(storage ration)
在函數中聲明的變數,並不是從程序開始到程序結束讓岩始終有效的。變數的生存期也就是生命有兩種,它們可以通過 存儲期 (storage ration)這個概念來體現。
在函數中不使用存儲類說明符 static 而定義出的對象(變數),被賦予了 自動存儲期 (automatic storage ration), 它具有以下特性。
也就是說,該對象擁有短暫的壽命,另外, 如果不顯式地進行初始化,則該對象會被初始化為不確定的值 。
被賦予自動存儲期的對象,在程序執行到 int ax = 0; 的時候,就被創建出來並且進行初始化。
在函數中使用 static 定義出來的對象,或者在函數外聲明定義出來的對象被賦予了 靜態存儲期 (static storage ration),它具有以下特性。
也就是說,改對象擁有"永久"的壽命。另外, 如果不顯式地進行初始化,則該對象會自動初始化為0 。
被賦予了靜態存儲期的對象,會在 main 函數兄滑罩開始執行之前被初羨鬧始化 。因此,雖說程序執行的時候會經過 static int sx = 0; 的聲明,但其實那個時候並沒有進行初始化處理,也就是說該聲明並未執行賦值處理。
在函數通過存儲類說明符 auto 和 register 聲明定義出的變數,也被賦予了自動存儲期。通過 auto int ax = 0; 進行的聲明和不使用 auto 進行的聲明在編譯的時候是完全相同的。因此 auto 就顯得有些多餘了。
另外,使用 register 進行的聲明 register int ax = 0; ,在源程序編譯的時候, 變數 ax 不是保存在內存中,而是保存在更高速的寄存器中,然而,由於寄存器的數量有限,所以也不是絕對的 。
現在編譯技術已經十分先進了,那個變數保存在寄存器中更好都是通過編譯自行判斷並進行最優化處理的(不僅如此,保存在寄存器中的變數在程序執行的時候也可能發生改變)。
使用 register 進行聲明也漸漸變得沒有意義了。