const常量與 define巨集

2021-07-04 10:25:34 字數 610 閱讀 2341

#define:巨集定義語句

, 在預處理階段直接做文字替換,不做型別檢查。

const:

c++

(1)處理時間不同

#define所定義的巨集變數在預編譯(預處理)的時候進行替換,

const

變數在編譯時確定其值。

(2)對於

const 

變數,系統只在其定義時分配一段記憶體空間,而

#define

則是給出了乙個立即數,不分配記憶體空間。因為

const

變數是存放在記憶體的靜態區域中,所以在程式執行過程中

const

變數只有乙個拷貝,而

#define 

所定義的巨集變數卻有多個拷貝,所以巨集在程式執行過程中所消耗的記憶體要比

const

變數的大得多。

(3)const 對資料進行型別檢查。

const

定義的常量具有資料型別,定義資料型別的常量便於編譯器進行資料檢查,使程式可能出現錯誤進行排查。

#define 

使用的是立即數,並沒有明確指定這個量的型別。這容易帶來一些問題。定義巨集引數時需將引數()起來。而且呼叫時引數不應在巨集中再做運算。

巨集定義 define 與常量 const 區別

巨集定義 define 是字元替換,沒有資料型別的區別,同時這種替換沒有型別安全檢查,可能產生邊際效應等錯誤 邊際效應 define n 2 3 我們預想的 n 值是 5,我們這樣使用 ndouble a n 2 我們預想的 a 的值是 2.5,可實際上 a 的值是 3.5const 常量是常量的宣...

const常量與define巨集定義的區別

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

const常量與define巨集定義的區別

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