• 變量類型

    2018-08-12 22:03 更新

    變量類型

    變量名給我們提供了在程序中我們可以使用的空間信息。每個變量在 C++ 中都有一個特定的類型,它決定變量在內(nèi)存中的大小和布局;在該內(nèi)存空間可以存放取值范圍;和一組可以應(yīng)用于該變量的操作。

    一個變量的名稱可以由字母、數(shù)字和下劃線字符組成。它必須以字母或下劃線開始。大寫和小寫的字母是不同,因?yàn)?C++ 是區(qū)分大小寫的:

    C++ 中有以下基本變量類型,我們在上一節(jié)已經(jīng)介紹過:

    類型 描述
    bool 存儲的值為 true 或者 false
    char 通常是 8 位(一位字節(jié))。它是個整數(shù)類型。
    int 機(jī)器中最常用的整數(shù)類型。
    float 單精度浮點(diǎn)類型的值。
    double 雙精度浮點(diǎn)類型的值。
    void 代表著缺失類型。
    wchar_t 一個寬字符類型。

    C++ 還允許定義各種其他類型的變量,我們將在后續(xù)章節(jié)將會介紹的,比如 Enumeration,指針,數(shù)組,引用,數(shù)據(jù)結(jié)構(gòu)和類。

    下一節(jié)將介紹如何定義,聲明和使用各種類型的變量。

    C++ 中變量的定義

    一個變量定義意味著告訴編譯器,存儲在哪里以及需要多少的存儲空間。變量定義要指定數(shù)據(jù)類型,同時包含該類型的一個或多個變量的列表:

        type variable_list;

    在這里,type 必須是一個有效的 C++ 數(shù)據(jù)類型,包括 char,w_char,int,float,double,bool 或者任何用戶自定義的對象等。variable_list 要包含一個或多個由逗號分隔的標(biāo)識符。如下是一些有效的聲明示例:

        int i, j, k;
        char c, ch;
        float f, salary;
        double d;

    int i,j,k; 這一行同時聲明和定義了變量 i,j 和 k,這條語句指示編譯器創(chuàng)建類型為 int,名稱為 i,j 和 k 的變量。

    變量在聲明的同時可以進(jìn)行初始化(分配一個初始值)。初始化由一個等號后面跟著一個常數(shù)表達(dá)式如下:

        type variable_name = value;

    如下是一些示例:

        extern int d = 3, f = 5;    // declaration of d and f. 
        int d = 3, f = 5;           // definition and initializing d and f. 
        byte z = 22;                // definition and initializes z. 
        char x = 'x';               // the variable x has the value 'x'.

    沒有初始化的定義:靜態(tài)類型的變量會隱式地被初始化為 NULL(所有位值為0),而其他的所有變量的初始值是未知的。

    C++ 中變量聲明

    變量聲明為編譯器提供保證,對于給定的類型和名稱的變量是唯一的,從而編譯器在進(jìn)一步進(jìn)行編譯變量時不需要變量的完整細(xì)節(jié)。變量聲明只是在編譯時有意義的,因?yàn)榫幾g器在進(jìn)行程序的鏈接時需要變量聲明的信息。

    當(dāng)你使用多個文件,并且你自己定義的變量放在其中一個文件里,變量的聲明將對程序的鏈接很有用。您可以使用 extern 關(guān)鍵字來聲明一個放在任何位置的變量。雖然你在你的 C++ 程序中你可以聲明一個變量多次,但它在一個文件中,一個函數(shù)或一塊代碼中只能定義一次。

    示例

    試試下面的例子,一個變量已經(jīng)在頂部進(jìn)行了聲明,但同時它也在 main 函數(shù)中被定義了:

        #include <iostream>
        using namespace std;
    
        // Variable declaration:
        extern int a, b;
        extern int c;
        extern float f;
    
        int main ()
        {
            // Variable definition:
            int a, b;
            int c;
            float f;
    
            // actual initialization
            a = 10;
            b = 20;
            c = a + b;
    
            cout << c << endl ;
    
            f = 70.0/3.0;
            cout << f << endl ;
    
            return 0;
        }

    上面的代碼編譯和執(zhí)行后,它產(chǎn)生以下結(jié)果:

        30
        23.3333

    相同的概念也可以應(yīng)用于函數(shù)聲明,當(dāng)你對一個函數(shù)進(jìn)行聲明時,它的定義可以在其他任何地方。例如:

        // function declaration
        int func();
    
        int main()
        {
            // function call
            int i = func();
        }
    
        // function definition
        int func()
        {
            return 0;
        }

    左值和右值

    C++ 中有兩種表達(dá)式:

    • 左值:指向內(nèi)存位置的表達(dá)式稱為左值表達(dá)式。一個左值可能出現(xiàn)在賦值語句的左邊或右邊。
    • 右值:右值是指一個數(shù)據(jù)值存儲在某個內(nèi)存地址中。一個右值是一個表達(dá)式,它不能被賦值,這意味著一個右值可能出現(xiàn)在賦值語句的右邊,而不是左邊。

    變量是左值,因此可能會出現(xiàn)在賦值語句的左邊。數(shù)字字面值是右值,因此不能被賦值,不能出現(xiàn)賦值語句的在左邊。下面是一個有效的語句:

        int g = 20;

    但如下卻不是一個有效的賦值語句,會產(chǎn)生編譯期錯誤:

        10 = 20;
    以上內(nèi)容是否對您有幫助:
    在線筆記
    App下載
    App下載

    掃描二維碼

    下載編程獅App

    公眾號
    微信公眾號

    編程獅公眾號