#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常量有具體的型別,在編譯階段會執行...