《C++自學入門》3.基本數據類型-2


1.const限定符

1.1  const關鍵字    

    現在回過頭來介紹常量的符號名稱。符號名稱指出了常量表示的內容。另外,如果程序在多個地方使用同一個常量,則需要修改該常量時,只需修改一個符號定義即可。本章前面關於#define語句的說明指出過,C++有一種更好的處理符號常量的方法,這種方法就是使用const關鍵字來修改變量聲明和初始化,例如,寧為了不忘記老婆的結婚紀念日十月三日,這就需要一個符號常量,輸入如下--》const float weddingDay = 10.03;

    這樣的話,變量weddingDay就成為了只讀常量,它不允許被二次賦值,在初始化時同樣的道理如果聲明定義分開,這會造成值不確定的后果,而且const修飾的值無法修改。如果以前使用過C語言,寧可能覺得#define就已經足夠完成這樣的工作了。但const比#define好。首先它能夠明確指定類型;其次,可以使用C++的作用域規則將定義限制在特定的函數或者文件中;第三,可以將const用於更加復雜的類型,比如后面會介紹的數組。

2.浮點數

2.1  簡述

    了解各種C++整型后,來看看浮點類型,也叫實型。它們是C++的第二組基本類型,浮點數能夠表示帶小數部分的數字,比如圓周率3.1415926,它們提供的范圍也更大,當無法表示為long類型時,則可以用浮點類型來表示。

    計算機將浮點數分成兩個部分存儲,一部分表示值,另一部分對值進行放大或者縮小。下面打個比方,對於數字34.1245和34124.5,它們除了小數點的位置不同,其他都是相同的。可以把第一個數表示為0.341245(基准值)和100(縮放因子),而第二個的基准值也是一樣的,但是縮放因子是10000。縮放因子的作用是移動小數點的位置,浮點因此而得名。我們知道計算機只認識二進制,因此縮放因子不是10的冪,而是2的冪。(我們后面會詳細討論)。

2.2  書寫浮點數

    C++有兩種書寫浮點數的方式,第一種是常見的標准小數點表示法:12.34,0.99;第二種是E表示法,其外觀是這樣的:3.35E6,這指的是3.35於100000相乘的結果;E6指的是10的6次方,即1后面6個0。因此,3.35E6表示的是3350000,6被稱為指數,3.35被稱為尾數。

2.3  浮點類型

    和C語言一樣,C++也有三種浮點類型:float,double,long double。這些類型都是按照它們可以表示的有效位數和允許的最小范圍來描述的,有效位是指數字中有意義的位。例如,加利福利亞的Shasta山脈的高度為14179英尺,該數值使用了5個有效位,指出了最接近的英尺數。

    事實上,C和C++對於有效位數的要求是,;float至少32位,double至少48位,且不少於float。long double至少和double一樣多,然而,通常float為32位,double位64位,另外,這三種類型的指數范圍至少是-37到+37。可以從頭文件cfloat中找到系統的限制。

    在程序中書寫浮點常量的時候,默認程序把它存儲為double類型,如果希望是float類型,可以使用f或者F后綴,對於long double類型,可使用l或者L后綴,比如:1.23f、2.45E20F、2.2L。

2.4  浮點數的優缺點

    與整數相比,浮點數有兩大優點,首先,它們可以表示整數之間的值,其次,由於有縮放因子,它們可以表示的范圍大很多。另一方面,浮點運算的速度通常比整數運算慢,且精度將降低,例子--》:

#include <iostream>

using namespace std;

int main()
{
	float a = 2.34E+22f;
	float b = a + 1.0f;
  
	cout << "a = " << a << endl;
	cout << "b - a = " << b - a << endl;
  
  
	return 0;

}

 

該程序將數字加1,然后減去原來的數字,結果應該為1。然鵝結果如下:

a = 2.34e+022;b - a = 0;

問題在於,2.34E+22是一個小數點左邊有23位的數字。加上1,就是在第23位加1。float類型只能表示數字中的前6位或前7位,因此修改第23位對這個值不會有任何影響。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM