詳解C++編程中的變量相干常識。本站提示廣大學習愛好者:(詳解C++編程中的變量相干常識)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解C++編程中的變量相干常識正文
在法式運轉時代其值可以轉變的量稱為變量。一個變量應當有一個名字,並在內存中占領必定的存儲單位,在該存儲單位中寄存變量的值。請留意辨別變量名和變量值這兩個分歧的概念,見圖
變量名規矩
先引見標識符的概念。和其他高等說話一樣,用來標識變量、符號常量、函數、數組、類型等實體名字的有用字符序列稱為標識符(identifier)。簡略地說,標識符就是一個名字。變量名是標識符的一種,變量的名字必需遵守標識符的定名規矩。
C++劃定標識符只能由字母、數字和下劃線3種字符構成,且第一個字符必需為字母或下劃線。上面列出的是正當的標識符,也是正當的變量名:
sum, average, total, day, month, Student_name, tan, BASIC, li_ling
上面是不正當的標識符和變量名:
M.D.John, $123, #33, 3G64, Ling li, C++, Zhang-ling, U.S.A.
留意:在C++中,年夜寫字母和小寫字母被以為是兩個分歧的字符。是以,sum和SUM是兩個分歧的變量名。普通地,變量名用小寫字母表現,與人們平常習氣分歧,以增長可讀性。應留意變量名不克不及與C++的症結字、體系函數名和類名雷同。在國外軟件開辟任務中,常習氣在變量後面加一個字母以表現該變量的類型,如iCount表現這是一個整型變量,cSex表現這是一個字符型變量。
C++沒有劃定標識符的長度(字符個數),但各個詳細的C編譯體系都有本身的劃定。有的體系取32個字符,跨越的字符不被辨認。
界說變量
在C++說話中,請求對一切用到的變量作強迫界說,也就是必需“先界說,後應用”,如例2.2和例2.3那樣。界說變量的普通情勢是:
變量類型 變量名表列;
變量名表列指的是一個或多個變量名的序列。如:
float a,b,c,d,e;界說a,b,c,d,e為單精度型變量,留意各變量間以逗號分隔,最初是分號。可以在界說變量時指定它的初值。如:
float a=83.5, b, c=64.5, d=81.2, e; //對變量a,c,d指定了初值,b和d未指定初值
C說話請求變量的界說應當放在一切的履行語句之前,而C++則抓緊了限制,只需求在第一次應用該變量之進步行界說便可。也就是說,它可以湧現在語句的中央,如:
int a; //界說變量a(在應用a之前界說) a=3; //履行語句,對a賦值 float b; //界說變量b(在應用b之前界說) b=4.67; //履行語句,對b賦值 char c; //界說變量c(在應用c之前界說) c='A'; //履行語句 ,對c賦值
C++請求對變量作強迫界說的目標是:
1) 凡未被事前界說的,不作為變量名,這就可以包管法式中變量名應用得准確。例如,假如在聲明部門寫了
int student;
而在履行語句中錯寫成statent。如
statent=30;
在編譯時檢討出statent未經界說,作為毛病處置。輸入“變量statent未經聲明”的信息,便於用戶發明毛病,防止變量名應用時失足。
2) 每個變量被指定為一肯定類型,在編譯時就可以為其分派響應的存儲單位。如指定a和b為int型,普通的編譯體系對其各分派4個字節,並按整數方法存儲數據。
3) 指定每變量屬於一個特定的類型,這就便於在編譯時,據此檢討該變量所停止的運算能否正當。例如,整型變量a和b,可以停止求余運算:
a%b
%是“求余”,獲得a/b的余數。假如將a和b指定為實型變量,則不許可停止“求余”運算,在編譯時會給出有關的失足信息。
為變量賦初值
許可在界說變量時對它付與一個初值,這稱為變量初始化。初值可所以常量,也能夠是一個有肯定值的表達式。如
float a, b=5.78*3.5, c=2*sin(2.0);
表現界說了a,b,c為單精度浮點型變量,對b初始化為5.78*3, 對c初始化為2*sin(2.0),在編譯銜接後,從尺度函數庫獲得正弦函數sin(2.0)的值,是以變量c有肯定的初值。變量a未初始化。
假如對變量未賦初值,則該變量的初值是一個弗成猜測的值,即該存儲單位中其時的內容是不曉得的。例如,若未對a和b賦值,履行輸入語句
cout<<a<<" "<<b<<" "<<c<<endl;
輸入成果能夠為
1.48544e-38 15 1.81858 (各次運轉情形能夠分歧)
初始化不是在編譯階段完成的(只要在第4章中引見的靜態存儲變量和內部變量的初始化是在編譯階段完成的),而是在法式運轉時履行本函數時付與初值的,相當於履行一個賦值語句。例如:
int a=3;
相當於以下兩個語句 :
int a; // 指定a為整型變量 a=3; // 賦值語句,將3賦給a
對多個變量付與統一初值,必需分離指定,不克不及寫成
float a=b=c=4.5;
而應寫成
float a=4.5, b=4.5, c=4.5;
或
float a, b, c=4.5; a=b=c;
C++常變量
在界說變量時,假如加上症結字const,則變量的值在法式運轉時代不克不及轉變,這類變量稱為常變量(constant variable)。例如:
const int a=3; //用const來聲明這類變量的值不克不及轉變,指定其值一直為3
在界說常變量時必需同時對它初始化(即指定其值),爾後它的值不克不及再轉變。常變量不克不及湧現在賦值號的右邊。例如下面一行不克不及寫成:
const int a; a=3; //常變量不克不及被賦值
可以用表達式對常變量初始化,如
const int b=3+6, c=3*cos(1.5); //b的值被指定為9,c的值被指定為3*cos(1.5)
但應留意,因為應用了體系尺度數學函數cos,必需將包括該函數有關的信息的頭文件“cmath”(或math.h)包括到本法式單元中來,可以在本法式單元的開首加上以下#include敕令:
#include <cmath>
或
#include <math.h>變量的值應當是可以變更的,怎樣值是固定的量也稱變量呢?其實,從盤算機完成的角度看,變量的特點是存在一個以變量名定名的存儲單位,在普通情形下,存儲單位中的內容是可以變更的。對常變量來講,不過在此變量的基本上加上一個限制:存儲單位中的值不許可變更。是以常變量又稱為只讀變量(read-only-variable)。請差別用#define敕令界說的符號常量和用const界說的常變量。符號常量只是用一個符號取代一個字符串,在預編譯時把一切符號常量調換為所指定的字符串,它沒有類型,在內存中其實不存在以符號常量定名的存儲單位。而常變量具有變量的特點,它具有類型,在內存中存在著以它定名的存儲單位,可以用sizeof運算符測出其長度。與普通變量唯一的分歧是指定變量的值不克不及轉變。用#define敕令界說符號常量是C說話所采取的辦法,C++把它保存上去是為了和C兼容。C++的法式員普通愛好用const界說常變量。固然兩者完成的辦法分歧,但從應用的角度看,都可以以為用了一個標識符代表了一個常量。有些書上把用const界說的常變量也稱為界說常量,但讀者應當懂得它和符號常量的差別。