const 常量與 define常量的區別

2022-04-27 18:58:14 字數 484 閱讀 8998

c++中的常量可以使用const定義,也可以使用#define巨集定義的方式;二者區別如下:

- **區別**

1. const定義的常量有自己的資料型別,編譯器可以對其進行嚴格的型別檢查;但是define定義的巨集常量沒有資料型別,執行時只會對其進行字元替換,不會進行型別檢查;

2. const定義的常量,在程式執行時存在與常量表中,系統會為其進行記憶體分配;但是define定義的巨集常量,在預處理階段只是會將define定義的內容進行直接替換,在程式執行的時候常量表中沒有用define定義的巨集常量,系統不會為其進行記憶體分配。

3. define定義表示式時要注意「邊緣效應」;如#define n 2+1 ;2*n; //這個結果應該是2x2+1=5,不是6;這就是「邊緣效應」;

4. const定義的常量常被稱為常變數或者唯讀變數,是因為它有型別,會進行型別檢查;而且const可以在任何地方定義常量,在執行過程中,編譯器對其的處理過程與變數相似,只是記憶體的分配地方不同;

const常量與 define巨集

define 巨集定義語句 在預處理階段直接做文字替換,不做型別檢查。const c 1 處理時間不同 define所定義的巨集變數在預編譯 預處理 的時候進行替換,const 變數在編譯時確定其值。2 對於 const 變數,系統只在其定義時分配一段記憶體空間,而 define 則是給出了乙個立即...

const常量與define 的區別

1 編譯器處理方式不同 define巨集是在預處理階段展開。const常量是編譯執行階段使用。2 型別和安全檢查不同 define巨集沒有型別,不做任何型別檢查,僅僅是展開。const常量有具體的型別,在編譯階段會執行型別檢查。3 儲存方式不同 define巨集僅僅是展開,有多少地方使用,就展開多少...

C C 定義常量 define與const比較

1。const定義常量是有資料型別的,而 define巨集定義常量卻沒有。這樣const定義的常量編譯器可以對其進行資料靜態型別安全檢查,而 define巨集定義的常量卻只是進行簡單的字元替換,沒有型別安全檢查,且有時還會產生邊際效應 不如你願處 所謂邊際效應舉例如下 define n 100 de...