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 double
與double
的資料範圍相同,為從-1.797693135×10-308-1到1.797693135×10308的實數。
3.字元型
字元型變數,顧名思義,即儲存字元和字串的變數,變數的識別符號是char
。字元型變數儲存的是ASCII碼,對照表見下:
此外,還有第二種字串型別string
。string
不是關鍵字,但是它的定義方法與其他型別一樣。
4.布林型
布林型變數的識別符號是bool
,這種型別的值與眾不同:它只有兩個值——true
和false
,其中true
在電腦中儲存為1
,false
為0
。
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
識別符號要求
- 必須以字母或下劃線為開頭
- 除開頭外,識別符號可以是數字、下劃線或字母
- 如果兩個識別符號大小寫有區別,那麼這兩個識別符號會被認為是兩個變數。
- 識別符號不得是關鍵字(如下圖)
可以用如下方法定義多個同型別的變數:
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;