《C++ Primer》讀書筆記(2,3.1,3.2)

字節 byte   和字 word     通常 一個字節由8 位構成 而一個字由32 位構成 或者說是4個字節 但是 工作站操作系統現在正在朝64 位系統的方向轉換


預定義的內置的[built in]  或稱基本的primitive] 數據類型

字符型char   通常用來表示單個字符和小整數 它可以用一個機器字節來表示 ([可以] 非 [就是])
       整型int   短整型short    長整型long    它們分別代表不同長度的整數值。 典型情況下 short 以半個字表示; int 以一個機器字表示; 而long 爲一個或兩個機器字。 在32 位機器中 int 和long 通常長度相同 

       浮點型float   雙精度double 和長雙精度long double       分別表示單精度浮點數 雙精度浮點數和擴展精度的浮點數值 典型情況下 float 爲一個字double 是兩個字       long double 爲三個或四個字 。    char short int 和long 稱爲整值類型 integral type 


關於文字常量

當一個數值 例如1        出現在程序中時 它被稱爲文字常量 literal constant 

稱之爲文字 是因爲我們只能以它的值的形式指代它;稱之爲 常量 是因爲它的值不能被改變。3.14159 是double 型的文字常量 

文字常量是不可尋址的[ nonaddressable  ]      儘管它的值也存儲在機器內存的某個地方 但是我們沒有辦法訪問它們的地址

在缺省情況下, 整型文字常量被當作是一個int 型的有符號值

 

       20    // 十進制 
        024   // 八進制 
        0x14  // 十六進制 
在整型文字常量前面加一個0  ,該值將被解釋成一個八進制數;而在前面加一個0x 或0X 則會使一個整型文字常量被解釋成十六進制數


文字常量後面加一個  L  或 l    字母L 的大寫形式或者小寫形式 將其指定爲long 類型;後面加上 u  或 U     將其指定爲一個無符號數;

指定無符號long 型的文字常量:1024UL     8Lu均可


 一部分不可打印的字符 單引號 雙引號以及反斜槓可以用如下的轉義序列來表示 轉義序列以反斜槓開頭 
        newline(換行符)        \n 
        horizontal tab(水平製表鍵) \t 
        vertical tab(垂直製表鍵)\v 

        backspace(退格鍵)      \b 
        carriage return (回車鍵)   \r 
        formfeed (進紙鍵)      \f 
        alert (beel) (響鈴符)      \a 
        backslash (反斜槓鍵)        \\ 
        question mark (問號)      \? 
        single quote (單引號)      \' 
        double quote (雙引號)      \" 

\ooo 
    這裏的ooo 代表三個八進制數字組成的序列


字符文字前面可以加 L    例如 L'a'    這稱爲寬字符文字 類型爲wchar_t    寬字符常量用來支持某些語言的字符集合 如漢語,日語。這些語言中的某些字符不能用單個字符來表示


如果兩個字符串或寬字符串在程序中相鄰 C++就會把它們連接在一起 並在最後加上一個空字符 例如

        "two"      "some" 
    它的輸出結果是 twosome 

如果將一個字符串常量與一個寬字符串常量連接起來 例如 

        // 不建議這樣使用 
        "two"      L"some"
結果是未定義的 undefined



一個字符串文字可以擴展到多行 在一行的最後加上一個反斜槓 表明字符串文字在下一行繼續

"a multi-line \ 
        string literal signals its \ 
        continuation with a backslash" 



字符串文字的類型是常量字符數組 它由字符串文字本身以及編譯器加上的表示結束的空 null   字符構成 例如         
 'A' 
    代表單個字符 A         下面則表示單個字符A 後面跟一個空字符     
 "A " 
    空字符是C 和C++用來標記字符串結束的符號 


關於變量的左值與右值

1.它的數據值 存儲在某個內存地址中 有時這個值也被稱爲對象的右值 rvalue ,讀做are-value。我們也可認爲右值的意思是被讀取的值read value   文字常量和變量都可被用作右值

2.它的地址值——即 存儲數據值的那塊內存的地址 它有時被稱爲變量的左值 lvalue ,讀作ell-value   我們也可認爲左值的意思是位置值 location value  文字常量不能被用作左值

ch = ch - 'O';
在表達式的右邊 ch 和文字字符常量用作右值 在左邊 ch 用作左值 

對象聲明 declaration    

作用是使程序知道該對象的類型和名字 它由關鍵字extern以及跟在後面的對象類型以及對象的名字構成

extern string fileName; 
ifstream input_file( fileName ); 

不是定義 不會引起內存分配 實際上 它只是說明了在程序之的某處有這個變量的定義




關於初始值

如果一個變量是在全局域[ global scope  ] 內定義的 那麼系統會保證給它提供初始值0 ;如果變量是在局部域 local scope      內定義的 或是通過new 表達式動態分配的 則系統不會向它提供初始值0       這些對象被稱爲是未初始化的 uninitialized


支持兩種形式的初始化 第一種形式是使用賦值操作符的顯式語法形式 

        int ival = 1024; 
        string project = "Fantasia 2000"; 

    在隱式形式中 初始值被放在括號中 
        int ival( 1024 ); 
        string project( "Fantasia 2001" ); 

每種內置數據類型都支持一種特殊的構造函數語法 可將對象初始化爲0,例如 
        // 設置 ival爲 0  dval爲 0.0 
        int ival = int(); 
        double dval = double(); 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章