C++入門教程之二:變數

zqqrx0546發表於2021-05-16

C++入門教程之二:變數

變數,顧名思義,意思是變化的量。變數的定義是計算機語言中能儲存計算結果或能表示值的抽象概念。一個基本的程式需要變數,因此變數是程式設計中的一大重點。

變數基本結構

var_type var_name;
//如
int hello;

其中var_name是變數型別,var_name是變數名稱。

資料範圍 變數所能儲存的資料。

1.整型變數

整型是最基本、最常用的變數型別,其表示的數字為整數。整型包括長整型、短整型、整型三種。

整型 int

int是最常見的資料型別,資料範圍是從-2147483648到2147483647的整數。

長整型 long

long是處理大資料的最佳選擇,其資料範圍是從-9.223372037×1018到9.223372037×1018-1的整數。

短整型 short

short是快速建立簡單資料的一個方法,資料範圍是從-32768到32767的整數

2.浮點型

浮點型又稱實型,其表示的數字為實數。浮點型資料的運算要比整型資料的運算慢得多,因此如非必要,儘量不要使用浮點型變數。浮點型變數包括單精度型別浮點型、雙精度型別和長雙精度型別三種

單精度型別浮點型 float

float是最常見的浮點型變數。其資料範圍是從-3.402823669×10-38-1到3.402823669×1038的實數。

雙精度型別浮點型 double

double是儲存非常大的資料的變數型別,其資料範圍是從-1.797693135×10-308-1到1.797693135×10308的實數。

長雙精度型別浮點型 long double

long doubledouble的資料範圍相同,為從-1.797693135×10-308-1到1.797693135×10308的實數。

3.字元型

字元型變數,顧名思義,即儲存字元和字串的變數,變數的識別符號是char。字元型變數儲存的是ASCII碼,對照表見下:
ASCII
此外,還有第二種字串型別stringstring不是關鍵字,但是它的定義方法與其他型別一樣。

4.布林型

布林型變數的識別符號是bool,這種型別的值與眾不同:它只有兩個值——truefalse,其中true在電腦中儲存為1false0

5.複數

複數的使用方法與前面幾種不同,需要包含標頭檔案complex
用法

complex<var_type> var_name {實部, 虛部};
//如
complex<double> a {1, 5};

假設有一個複數是1+5i,那麼這個複數的實部為1,虛部為5。這裡的var_type指的是實部和虛部兩個資料的變數型別。

6.auto型別

auto型別有兩個意義:

單獨使用

auto型別是一個很友好的型別。正如它的名字,auto意味著你不用知道這個資料的型別,因為編譯器會幫你推斷資料型別。比如你輸入auto a = 10000000000000000;編譯器會自動把auto替換為long

auto不能推斷複數型別和string

注:以下介紹的資料型別無法單獨使用,具體語法是

var_decoration var_type var_name;
//如
const int a;

在函式中使用

想如下程式碼:

#include<iostream>
int add()
{
	auto int a;
	a+=1;
	cout << a << endl;
}
int main()
{
	add();
	add();
	return 0;
}	

你會發現,輸出的兩個數將都是2。auto變數在每次重新定義時將重新分配記憶體。

7.static型別

想如下程式碼:

#include<iostream>
int add()
{
	static int a;
	a+=1;
	cout << a << endl;
}
int main()
{
	add();
	add();
	return 0;
}	

你會發現,輸出的兩個數將變成2和3。static變數在函式執行結束後會被儲存下來。

8.register型別

register型別代表這個變數被儲存在了CPU的暫存器中。這意味著如果你想多次使用這個變數,使用速度將大大加快。但是register型別的可移植性較差,不同的電腦對register變數的處理不同,可能導致在某些電腦中該變數會崩潰。所以不建議使用。

9. extern型別

如果宣告一個extern型別的變數,則該變數可以跨檔案使用。但是跨的檔案必須同時編譯,否則無法使用。

10. const型別

const型別代表這個變數無法被改變。如果編譯器檢測到const變數值被改變,會報錯。const常來定義一個常量。

11.unsigned型別

unsigned型別的意義是將資料型別的資料改為非負的。這意味著其資料的取值範圍將發生改變。改變的演算法為:假設原來的資料範圍是-a-1~a(a>0),則修飾後的資料範圍將變為0~2a。

字首和字尾

字首

字首的作用是告訴編譯器這個數字的進位制。用法為

0123	//八進位制字首為0
123		//十進位制無字首
0x1ac	//十六進位制字首為0x,十六進位制中的a-f可以是大寫

字尾

字尾的作用是表明一個數字的型別,用法如下:

123				//int
123L			//long
123U			//unsigned int
123.123f		//float
123.123L		//long double

科學計數法

用法:

10e3			//即1×10^3
1.53e-5			//即1.53×10^-5

識別符號要求

  1. 必須以字母或下劃線為開頭
  2. 除開頭外,識別符號可以是數字、下劃線或字母
  3. 如果兩個識別符號大小寫有區別,那麼這兩個識別符號會被認為是兩個變數。
  4. 識別符號不得是關鍵字(如下圖)C++關鍵字

可以用如下方法定義多個同型別的變數:

int a, b, c;

變數初始化

基本語法:

var_type var_name = number;
//如
int a = 1;

注意!
想如下程式碼:

int a, b = 100;

此程式碼僅將b賦值為100,a並沒有被初始化。
如果想對多個變數賦同一個值,可以用如下方法:

int a, b;
a = b = 100;

相關文章