php中定義常數的兩種方法

2020-07-16 10:05:44

「常數」的廣義概念是:‘不變化的量’(例如:在計算機程式執行時,不會被程式修改的量;數學函數中的某一個量,例如每一個具體的圓的半徑、直徑數值;物理學中的靠近地面的重力加速度;真空中的光速數值;)下面為大家介紹一下PHP中兩種定義常數的方法。

推薦教學:PHP視訊教學

我們這裡用pi來舉例。

  第一種方式:宏定義,是將Pi定義成一種符號,此時Pi只是3.1415926的別名,在編譯期間用3.1415926去取代Pi的值。

  1.define是宏定義,程式在預處理階段將用define定義的內容進行了替換。因此程式執行時,常數表中並沒有用define定義的常數,系統不為它分配記憶體。const定義的常數,在程式執行時在常數表中,系統為它分配記憶體。

  2.define定義的常數,預處理時只是直接進行了替換。所以編譯時不能進行資料型別檢驗。const定義的常數,在編譯時進行嚴格的型別檢驗,可以避免出錯。

  3.define定義表示式時要注意「邊緣效應」,例如如下定義: #define N 2+3 //我們預想的N值是5,我們這樣使用N,int a = N/2; //我們預想的a的值是2.5,可實際上a的值是3.5原因在於在預處理階段,編譯器將 a = N/2處理成了 a = 2+3/2;這就是宏定義的字串替換的「邊緣效應」因此要如下定義:#define N (2+3)。

  第二種方式:是將PI定義成變數,但告訴編譯器它的值是固定不變的,如果在程式中試圖去修改它的值,在編譯時會報錯。

  const定義的常數叫做常變數原因有二:const定義常數像變數一樣檢查型別;const可以在任何地方定義常數,編譯器對它的處理過程與變數相似,只是分配記憶體的地方不同。

  總結起來說,推薦用const ,而不是#define 預處理指令(但是目前看到的是使用#define的較多,難道是方便?有待考量)

  1. const 可以定義資料型別,提高了型別安全性。例如,我們上面可以指定PI 這個常數是double 型別

  2. const 既然是變數(這裡有點彆扭,它其實是不變的,但名稱叫做常值變數), 那麼就有地址,適用面更加廣

  3. 語法上也更好理解一些

符號常數 #define Pi 3.1415926f;
 
常值變數 const float pi 3.1415926f;

以上就是php中定義常數的兩種方法的詳細內容,更多請關注TW511.COM其它相關文章!