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;