變量名給我們提供了在程序中我們可以使用的空間信息。每個變量在 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é)將介紹如何定義,聲明和使用各種類型的變量。
一個變量定義意味著告訴編譯器,存儲在哪里以及需要多少的存儲空間。變量定義要指定數(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),而其他的所有變量的初始值是未知的。
變量聲明為編譯器提供保證,對于給定的類型和名稱的變量是唯一的,從而編譯器在進(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á)式:
變量是左值,因此可能會出現(xiàn)在賦值語句的左邊。數(shù)字字面值是右值,因此不能被賦值,不能出現(xiàn)賦值語句的在左邊。下面是一個有效的語句:
int g = 20;
但如下卻不是一個有效的賦值語句,會產(chǎn)生編譯期錯誤:
10 = 20;
更多建議: