C++字面常數 @ 大世界小世界 :: 隨意窩 Xuite日誌
  • 關鍵字
    1. 沒有新回應!
  • 200512031328C++字面常數

    字面常數,「字面」是因為我們只能夠論及其數值,「常數」是因為其值不可改變,例如,1這樣的一個數值出現在程式中,我們稱它為字面常數。每一個字面常數有一個對應的型別,例如0的型別為int,3.14159型別為double。我們說字面常數是「不可取址」,因為數值雖然的確儲存於電腦記憶體的某處,但我們無法處理其位值。

    C++有五種字面常數:整數字面常數、浮點數字面常數、bool字面常數、字元字面常數與字串字面常數。

    1.整數字面常數:可以10進位、8進位、16進位表示之,不影響其值  的位元內容,例如20可以用三種表示方式:
           20 //十進位
           024 //八進位
           0x14 //16進位
    整數字面常數之前如果加上0代表八進位表示法;加上0x代表16進位表示法。
    預設情況下,整數字面常數被視為「帶正負號的int型別」;整數字面常數亦可表示成long型別,只須在數值之後加上L或l,通常大家只用大寫的L,因為小寫l容易與1混淆。同理,如果整數字元字面常數後面加上u或U,便是代表無正負號型別,例如:128u、1024UL、8Lu。

    2.浮點數字元字面常數
    :可以用科學記號表示亦可以一般10進位表示。如果是科學記號,冪指數部份可寫為E或e。
    預設情況下,浮點數被視為double型別。如果浮點數字面常數欲表示成float型別,可在數值後加上F或f表示之。同理擴充精度可以在數值尾加上L或l表示。注意F、f、L、l只能附加於用十進位表示法的數值,例如:3.14159、0.1f、12.345L,3e1,1.0E-3、2. 。

    3. bool字面常數: true 或 false。

    4. 字元字面常數: 如果以單引號包圍某個字元,即可獲得一個可顯示的字元字面常數,例如:'a '、'2'。
    如果想表示不可顯示的字元(控制字元)、單引號、雙引號以及倒斜線等等,可以用下列所謂的escape sequences表示(escape sequences是以一個倒斜線開始):
         new line          'n' \ 新行
         herizontal tab    't' \水平定位一個tab
         vertical   tab    'v' \垂直定位一個tab
         backspace         'b' \退回一格
         carriage return   'r' \回返
         formfeed          'f' \ 換頁
         alert(bell)       'a' \嗶聲
         single quote      ''' \ 顯示單引號
         double quote      '"' \顯示雙引號

    escape sequence的一般格式: xxx
    其中xxx代表一個序列,最多有三個8進位值,這些8進位值表現出某字元在電腦字元集中所對應的數值。例如:
       '7'   \bell、對應的字元字面常數為'a'
       '12'  \新行、對應的字元字面常數為'n'
       '62' \對應的字元字面常數為'2'
    此外字元字面常數預設為char型別,亦可表示成wchar_t型別,只要用L作為前導符號即可,例如 L'a',此稱為寬字元字面常數。

    5、字串字面常數:0個以上的字元組成,封裝於雙引號內,其中可包含不可顯示字元(控制字元)。字串其實就是字元字面常數陣列,其中包含一串字元字面常數及一個做為結束符號的NULL字元。NULL字元是compiler為我們加上去的。例如:'A',表示單一字元字面常數(A字元);"A",表示一個A字元加上一個NULL字元。NULL字元是C與C++用來表示字串結束的一個標記符號。

    寬字串,也是以L做為字串的前導詞:
    L"a wide string literal"
    如果程式中有二個字串或寬字串彼此鄰近,就會被連鎖在一起,最後在加上NULL字元做為結束符號,例如:
     "two" "three" == "twothree"
    但如果企圖將一個一般字串和寬字串連結在一起,其結果C++未定義,所以應避免此種用法:
     "two" L"three" == ??




    C++ 前置處理器常數|日誌首頁|二維陣列傳入函數上一篇C++ 前置處理器常數下一篇二維陣列傳入函數
    回應