一、變量
1.對變量含義的理解:
變量就像是經過工廠加工后有一定容量的容器。在變量定義時,系統充當了工廠的角色,按照類型為變量分配相應的空間。定義完成的變量可以存放相應類型的值,存放的值大於變量所能接受的范圍時變量會發生溢出。顧名思義,變量里的值一般是可以修改的,體現在該變量存儲區的值可以復寫。
2.C++中變量的聲明:
C++定義變量的語法:
variable_type(變量類型) variable_name(變量名稱);
或
variable_type(變量類型) variable_name(變量名稱) = initial_value(初始值);
如:
int v1; char v2='a';
聲明多個類型相同的變量:
variable_type(變量類型) variable_name(變量名稱),variable_name(變量名稱),...,variable_name(變量名稱);
variable_type(變量類型) variable_name(變量名稱) = initial_value(初始值),...,variable_name(變量名稱) = initial_value(初始值);
variable_type(變量類型) variable_name(變量名稱),...,variable_name(變量名稱) = initial_value(初始值);
如:
int a,b,c,d; int e=0,f=0,g=0; int h,i=0;
3.理解變量作用域:
每個變量都有作用域,變量的作用域決定了變量定義的生效范圍,就如同法律條文一樣,一般不同國家的法律條文僅作用於本國,變量僅生效於其作用域。函數內定義的變量的作用域為該函數內,全局變量的作用域為全局。不同函數內定義的變量被視為獨立實體,當該函數執行完畢便釋放變量所占用的內存空間,即便不同函數內定義的變量名稱相同也不會相互影響。
全局變量定義示例:
#include<iostream> using std::cout; using std::endl; int a=20; void Print() { cout<<a<<endl; } int main() {
Print(); cout<<a<<endl; }
局部變量定義示例:
#include<iostream> using std::cout; using std::endl; int a=20; void Print() { int b=30; cout<<b<<endl; cout<<a<<endl; } int main() { Print(); cout<<a; //cout<<b; }
注意:main函數中的注釋行"//cout<<b;"如果去掉注釋符號會有類似於'b' was not declared in this scope的報錯信息。因為變量 "b"只在Print函數中定義了,在main函數中沒有定義。
4.C++中常見變量類型和取值范圍:
4.1 bool變量
C++中專門為存儲布爾值true和false而創建的變量類型,bool變量的取值為true或false。
布爾變量定義示例:
bool running=false;
4.2 char變量
char變量用於存儲單個字符。char的取值為256個字符值,在ASCII碼中用7位二進制表示字符,可表示128個不同的字符值;在擴展ASCII碼用一個字節中的高一位做擴展位,其余7位表示128個不同的字符
加上高位的一位共8位可表示256個字符值。
char input_char='Y';//定義名為input_char的變量,並設置初始值為Y。
4.3 unsigned int 和 int變量
unsigned int 中有 unsigned short int 和 unsigned long int ,unsigned short int為二進制16位表示范圍為0~65535,unsigned long int 為二進制32位表示范圍為0~4294967295。在大多C++編譯器中int被認
為擁有4個字節共32位,即直接使用unsigned int時 其取值范圍大多時候為0~4294967295,部分編譯器會把它。unsigned long long int 的范圍為unsigned long int的兩倍。int 中有short int 和 long int 以及
long long int,它們的二進制表示最高位為符號位,所以 short int 的取值范圍 -32768~32767,long int 的取值范圍為-2147483648~2147483648,long long int 的取值范圍是 long 的基礎上擴展兩倍。
4.4 浮點類型 float 和 double
浮點數就是實數,可以是正,也可以是負,還可以包含小數值。如果要存儲小數就可以聲明浮點類型的變量,如:float Pi=3.1416;聲明雙精度浮點數(double)變量如:double Pi=3.14159265,注意想存
儲兩個整數相除得到的小數結果時,不能直接相除,而應在把整數換成類似"22.0"這樣的小數。
5. typedef替換變量類型
C++允許我們將變量類型替換為我們認為方便或更具描述性的名稱,為此可使用關鍵字 typedef。例如:typedef unsigned int Integral_type;給 unsigned int 一個別名 Integral_type。
二、常量
1. 常量的定義:
不被人為改變的量叫做常量,換句話說常量的值不能被修改。如果我們想定義了一個具有和變量一樣帶有名稱的常量,我們可以使用const來定義,也可以使用enum聲明枚舉常量。在C++11版本中新增了
常量表達式,聲明時使用constexpr。不推薦使用#define定義變量,因為其定義的是宏常量,只是字符替換,編譯器不關心常量的類型,沒法進行語法的檢查。const比#define更安全並且更加簡潔高效; #define兼容性更好。
2.枚舉常量的定義:
使用enum為一種變量設置特定一組取值。
例如枚舉常量包含彩虹的顏色:
enum RainbowColors { Violot = 0, Indigo, Blue, Green, Yellow, Orange, Red };
聲明的枚舉常量,編譯器會把它轉化為整數,其默認起始值為0,我們也可以給定初始值如上例中顯式給出初始值為0,我們還可以給每個枚舉常量賦指定值(使用默認值時每個值都比前一個大1,當然除
了第一個)。
注意:變量命名要符合規范,要站在別人的角度考慮,要使得變量名或常量名具有描述性。