3.6 常量 常量,顧名思義就是在程序執(zhí)行期間不會改變的固定值,。在C語言中,,常量的主要作用有兩個,其一為給變量賦值,,其二為與變量比較,,作為判斷條件。 在C語言程序中的常量有四大類,,分別是整數(shù)型常量,,浮點數(shù)常量,字符型常量和字符串常量,,本節(jié)先來介紹前三種,,字符串常量等講述字符串的時候再介紹。 整數(shù)型常量,,可以是二進制,,八進制,十進制,,十六進制的有符號數(shù)或者無符號數(shù),,這些數(shù)值在程序中無法單獨出現(xiàn),一旦出現(xiàn),,必定在程序語句中執(zhí)行對變量賦值操作或者執(zhí)行條件比較,。 首先,常量也是有符號的,,這個可能之前的書里面沒有特意指出,,但是在規(guī)范的C語言編程里面,當我們給一個變量賦值時,,一定要注意這個值的符號,。常量的符號,,在程序中用加在常量數(shù)值結尾的后綴表示,如果賦值的常量是個有符號數(shù),,即給有符號的變量賦值,,我們不需要加用以表示符號的后綴。但是如果賦值的變量是個無符號數(shù),,我們必須要指出這個常量也是個無符號常量(盡管不指出也不會有任何影響,,但是某些靜態(tài)語法解析工具會拋出警告),在一個常量的結尾加上后綴“U”表示此數(shù)值是個無符號的數(shù),。比如定義一個無符號變量UIntg,,并給它賦值無符號類型的整數(shù)1000,即可寫成: unsigned int UIntg = 1000U; 如果此時定義了一個有符號的整數(shù)Intg,,并給它賦值有符號類型的整數(shù)1000,,那么可以寫成: int Intg = 1000; 其次,常量可以是任意進制的,,C語言中,,在變量開頭前加上一個前綴來表示這個常量的進制,如果是十進制的就不需要加,。 一個常量前面加0b就表示這個常量是個二進制常量,,如0x10100001; 一個常量前面加數(shù)字0就表示這個常量是個八進制常量,,如0777,; 一個常量前面不加任何前綴就表示這個常量是十進制,如1000,; 一個常量前面加0x就表示這個常量是個十六進制常量,,如0xABCDEF0123。 結合前面所說的如果定義一個無符號類型的變量,,并且賦值二進制數(shù),,那就可以寫成: unsigned char dev_ctl_reg = 0b10100100U 這里有些讀者可能會疑惑,我們平時在編程的時候,,十進制用起來非常直觀,,易于常人理解,為何非得咨詢麻煩,,使用二進制常量賦值呢,?這是因為當我們在做一些硬件編程的時候,比如單片機,,已知它有一個寄存器是控制它外面的數(shù)字量輸入輸出引腳電平高低的,,這個寄存器的說明如圖3-6-1。這是一個八位的寄存器,每一位控制一個IO口,,如果對相應位寫1,,那么這一位對應的IO口輸出高電平,如果對相應位寫0,,那么這一位對應的IO口輸出低電平,。 圖3-6-1某IO控制寄存器 此時如果我們需要控制PA_7和PA4輸出高電平,其余都輸出高電平,,那要怎么做,?只需要將一個二進制數(shù)值的第七位和第四位設置成1,其余位為0,,并且將這個值賦給IOA這個寄存器即可,,那么此時使用二進制數(shù)值常量的優(yōu)點就體現(xiàn)出來了,如果用十進制數(shù)值,,那計算起來也是個工作量,,只需要“IOA = 0b10010000U;”即可。 最后,,如果需要對一個long類型的整型變量賦值一個長整型常量,,那么需對這個常量加一個后綴L,,當然后綴是可以疊加的,,如一個無符號的長整型常量,可以寫成“0x23AUL”,。 浮點常量由整數(shù)部分,、小數(shù)點、小數(shù)部分和指數(shù)部分組成,。您可以使用小數(shù)形式或者指數(shù)形式來表示浮點常量,。 當使用小數(shù)形式表示時,必須包含整數(shù)部分,、小數(shù)部分,,或同時包含兩者。當使用指數(shù)形式表示時,,必須包含小數(shù)點,、指數(shù),或同時包含兩者,。同樣的,,浮點數(shù)常量通過后綴加字母F(f)用來表示其為浮點數(shù),如: float length = 1.88f; 對于一些長度比較長的數(shù)值,,我們可以用指數(shù)的形式來表示他,,比如10000.0可以寫成1.0*10^4,在C語言中,,可以把“*10^”這一個整體用字母“E”或者“e”替代,,即可寫成1E4,,同樣的,如果要定義0.00001,,可以寫成1*10^(-5),,即為1E-5。 字符常量在3.5節(jié)中已經詳細講過,,就是用單引號’’,,將ASCII字符引入,即是字符常量,。
|
|
來自: 樂創(chuàng)客搬運工 > 《待分類》