在進(jìn)行程序設(shè)計(jì)時(shí),常常需要常量,例如圓周率π = 3.1416。在需要常量的地方,直接使用常量的數(shù)值的方法非常不好,例如:
//計(jì)算圓的面積
s = 3.1416*r*r;
...
如果我們需要提高計(jì)算精度,將π的值改為3.1415927進(jìn)行計(jì)算,我們就不得不將程序中所有的π值從3.1416改為3.1415927,這不僅繁瑣,更重要的是很容易出錯(cuò)。
C++允許定義符號(hào)常量,定義常量的一般形式為:
const 類(lèi)型 名字 = 值;
其中,"類(lèi)型"是指常量的類(lèi)型,如short、long、double等,"名字" 是指常量的名字,而"值"是指賦給常量的、合適的數(shù)據(jù)類(lèi)型的數(shù)值。 參看例2-7。
下面給出一個(gè)有常量定義的實(shí)例程序,這個(gè)程序是打印給定半徑的圓的面積和周長(zhǎng)。
例2-6:
void main()
{
const double PI = 3.1415926535898; //定義圓周率常量PI
double radius; //定義圓半徑變量
double area; //定義圓面積變量
double circumference; //定義圓周長(zhǎng)變量
cout << "Enter radius : ";
cin >> radius;
area = PI*radius*radius;
circumference = 2.0*PI*radius;
cout << "Area of circle of radius " << radius << " is "
<< area << " \n";
cout << "and its circumference is " << circumference
<< " \n";
}
運(yùn)行該程序,并輸入半徑值10.0:
Enter radius : 10.0↙
則輸出結(jié)果為:
Area of circle of radius 10.0 is 314.159
and its circumference is 62.8319
常量就是在程序運(yùn)行過(guò)程中其值不發(fā)生變化的量。常量可分為直接常量與符號(hào)常量。直接常量就是平常我們所說(shuō)的常數(shù),例如:
`r` // r為字符型直接常量
3.1415926 // 3.1415926為雙精度直接常量
符號(hào)常量就是用一個(gè)標(biāo)識(shí)符代表某個(gè)常量。符號(hào)常量可用關(guān)鍵字const聲明,其格式如下:
const 數(shù)據(jù)類(lèi)型 常量名=常數(shù)值;
例如:
const int a= 1234; //定義a為整型常量其值為1234
const char b=`a` //定義b 為字符型常量其值為a
在程序設(shè)計(jì)中,盡量使用符號(hào)常量來(lái)代替常數(shù),這是一種好的編程習(xí)慣,這樣可以增加程序的可讀性、可維護(hù)性。例如,在數(shù)值計(jì)算中,我們會(huì)經(jīng)常遇到一些常量,比如圓周率。如果把它定義成符號(hào)常量,當(dāng)需要更改常量值的時(shí)候,只需要更改符號(hào)常量的定義語(yǔ)句即可。
也可以使用預(yù)處理語(yǔ)句定義符號(hào)常量,例如我們用:
#define PI 3.14159
定義符號(hào)常量PI,然后在程序中使用PI,跟使用常數(shù)3.14159的效果是一樣的。編譯器在編譯時(shí),把符號(hào)PI替換成3.14159,當(dāng)需要修改PI的值時(shí),只需要修改上面的語(yǔ)句即可。但是我們不推薦這樣做:因?yàn)轭A(yù)定義符號(hào)與符號(hào)常量不同,在編譯時(shí)使用常數(shù)替代了所有的預(yù)定義符號(hào),這樣在代碼中相應(yīng)位置實(shí)際都是常數(shù)。程序中過(guò)多的常數(shù)會(huì)導(dǎo)致程序代碼量變大,而且在多個(gè)源文件中定義了同樣的符號(hào),會(huì)產(chǎn)生符號(hào)重定義的問(wèn)題。使用常量?jī)?yōu)于#define宏,優(yōu)點(diǎn)在于可指定類(lèi)型信息。
例2-7:
const double PI = 3.1415927; //圓周率π
const long number = 49L;
const char TAB = '\t';
const char QUERY = '?';
const double SOMENUM = 1.235E75;
//計(jì)算圓的面積
s = 3.1416*r*r;
...
如果我們需要提高計(jì)算精度,將π的值改為3.1415927進(jìn)行計(jì)算,我們就不得不將程序中所有的π值從3.1416改為3.1415927,這不僅繁瑣,更重要的是很容易出錯(cuò)。
C++允許定義符號(hào)常量,定義常量的一般形式為:
const 類(lèi)型 名字 = 值;
其中,"類(lèi)型"是指常量的類(lèi)型,如short、long、double等,"名字" 是指常量的名字,而"值"是指賦給常量的、合適的數(shù)據(jù)類(lèi)型的數(shù)值。 參看例2-7。
下面給出一個(gè)有常量定義的實(shí)例程序,這個(gè)程序是打印給定半徑的圓的面積和周長(zhǎng)。
例2-6:
void main()
{
const double PI = 3.1415926535898; //定義圓周率常量PI
double radius; //定義圓半徑變量
double area; //定義圓面積變量
double circumference; //定義圓周長(zhǎng)變量
cout << "Enter radius : ";
cin >> radius;
area = PI*radius*radius;
circumference = 2.0*PI*radius;
cout << "Area of circle of radius " << radius << " is "
<< area << " \n";
cout << "and its circumference is " << circumference
<< " \n";
}
運(yùn)行該程序,并輸入半徑值10.0:
Enter radius : 10.0↙
則輸出結(jié)果為:
Area of circle of radius 10.0 is 314.159
and its circumference is 62.8319
常量就是在程序運(yùn)行過(guò)程中其值不發(fā)生變化的量。常量可分為直接常量與符號(hào)常量。直接常量就是平常我們所說(shuō)的常數(shù),例如:
`r` // r為字符型直接常量
3.1415926 // 3.1415926為雙精度直接常量
符號(hào)常量就是用一個(gè)標(biāo)識(shí)符代表某個(gè)常量。符號(hào)常量可用關(guān)鍵字const聲明,其格式如下:
const 數(shù)據(jù)類(lèi)型 常量名=常數(shù)值;
例如:
const int a= 1234; //定義a為整型常量其值為1234
const char b=`a` //定義b 為字符型常量其值為a
在程序設(shè)計(jì)中,盡量使用符號(hào)常量來(lái)代替常數(shù),這是一種好的編程習(xí)慣,這樣可以增加程序的可讀性、可維護(hù)性。例如,在數(shù)值計(jì)算中,我們會(huì)經(jīng)常遇到一些常量,比如圓周率。如果把它定義成符號(hào)常量,當(dāng)需要更改常量值的時(shí)候,只需要更改符號(hào)常量的定義語(yǔ)句即可。
也可以使用預(yù)處理語(yǔ)句定義符號(hào)常量,例如我們用:
#define PI 3.14159
定義符號(hào)常量PI,然后在程序中使用PI,跟使用常數(shù)3.14159的效果是一樣的。編譯器在編譯時(shí),把符號(hào)PI替換成3.14159,當(dāng)需要修改PI的值時(shí),只需要修改上面的語(yǔ)句即可。但是我們不推薦這樣做:因?yàn)轭A(yù)定義符號(hào)與符號(hào)常量不同,在編譯時(shí)使用常數(shù)替代了所有的預(yù)定義符號(hào),這樣在代碼中相應(yīng)位置實(shí)際都是常數(shù)。程序中過(guò)多的常數(shù)會(huì)導(dǎo)致程序代碼量變大,而且在多個(gè)源文件中定義了同樣的符號(hào),會(huì)產(chǎn)生符號(hào)重定義的問(wèn)題。使用常量?jī)?yōu)于#define宏,優(yōu)點(diǎn)在于可指定類(lèi)型信息。
例2-7:
const double PI = 3.1415927; //圓周率π
const long number = 49L;
const char TAB = '\t';
const char QUERY = '?';
const double SOMENUM = 1.235E75;

