C++ 變數和型別



C++ 變數

變數為我們提供了程式可以操作的命名儲存。C++ 中的每個變數都具有特定的型別,該型別決定變數記憶體的大小和佈局;可以儲存在該記憶體中的值的範圍;以及可以應用於變數的操作集。

C++ 變數命名

變數的名稱可以由字母、數字和下劃線字元組成。它必須以字母或下劃線開頭。大寫字母和小寫字母是不同的,因為 C++ 區分大小寫。

C++ 中變數命名約定的一些其他規則 -

  • 關鍵字不能用作變數名。
  • 變數名不能包含空格。
  • 變數名中不能使用連字元 (-)。
  • 變數名不能以特殊字元和數字開頭。它應該是一個大寫或小寫字元或下劃線 (_) 。

有效變數名稱示例

一些有效的變數名稱如下 -

int age;
int _age;
int student_age;
int studentAge;

無效變數名稱示例

一些無效的變數名稱如下 -

int 2ndvariable;
int student-age;
int float;
int student age;
int #age;

C++ 變數型別

如下所示,C++ 中有以下基本變數型別,在上章中已解釋 -

序號 型別和描述
1

bool

儲存真或假值。

2

char

通常是一個八位位元組(一個位元組)。這是一種整數型別。

3

int

機器最自然的整數大小。

4

float

單精度浮點值。

5

double

雙精度浮點值。

6

void

表示型別的缺失。

7

wchar_t

寬字元型別。

C++ 還允許定義各種其他型別的變數,我們將在後續章節中介紹,例如列舉、指標、陣列、引用、資料結構

下一節將介紹如何定義、宣告和使用各種型別的變數。

C++ 中的變數定義

變數定義告訴編譯器在哪裡以及為變數建立多少儲存空間。變數定義指定資料型別,幷包含如下所示的一個或多個該型別變數的列表 -

語法

type variable_list;

這裡,type必須是有效的C++ 資料型別,包括 char、w_char、int、float、double、bool 或任何使用者定義的物件等,而variable_list可以包含一個或多個用逗號分隔的識別符號名稱。這裡顯示了一些有效的宣告 -

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

int i, j, k; 這行程式碼同時宣告和定義了變數 i、j 和 k;它指示編譯器建立名為 i、j 和 k 的 int 型別變數。

C++ 中的變數初始化

變數可以在其宣告中進行初始化(分配初始值)。初始化程式由等號後跟一個常量表達式組成,如下所示 -

語法

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'.

對於沒有初始化程式的定義:具有靜態儲存持續時間的變數隱式初始化為 NULL(所有位元組的值都為 0);所有其他變數的初始值未定義。

C++ 中的變數宣告

變數宣告向編譯器保證存在一個具有給定型別和名稱的變數,以便編譯器在不需要有關變數的完整詳細資訊的情況下繼續進行進一步的編譯。變數宣告僅在編譯時具有意義,編譯器在程式連結時需要實際的變數定義。

當您使用多個檔案並將變數定義在一個檔案中時,變數宣告很有用,該檔案將在程式連結時可用。您將使用extern關鍵字在任何地方宣告變數。儘管您可以在 C++ 程式中多次宣告變數,但它只能在一個檔案中、一個函式中或一段程式碼中定義一次。

示例

嘗試以下示例,其中變數已在頂部宣告,但已在 main 函式內部定義 -

#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;
}

當以上程式碼編譯並執行時,會產生以下結果 -

30
23.3333

相同的概念也適用於函式宣告,您在函式宣告時提供函式名稱,其實際定義可以在任何其他地方給出。例如 -

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

// function definition
int func() {
   return 0;
}

左值和右值

C++ 中有兩種表示式 -

  • 左值 - 指向記憶體位置的表示式稱為“左值”表示式。左值可以出現在賦值的左側或右側。

  • 右值 - 右值一詞是指儲存在記憶體某個地址中的資料值。右值是一個表示式,不能將其值賦予它,這意味著右值可以出現在賦值的右側,但不能出現在左側。

變數是左值,因此可以出現在賦值的左側。數字文字是右值,因此不能被賦值,也不能出現在左側。以下是一個有效的語句 -

int g = 20;

但以下語句無效,會生成編譯時錯誤 -

10 = 20;
廣告