define巨集定義和const常變數區別

2022-06-01 07:51:09 字數 572 閱讀 5622

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)

const定義表示式沒有上述問題。

const定義的常量叫做常變數原因有二:

const定義常量像變數一樣檢查型別

const可以在任何地方定義常量,編譯器對它的處理過程與變數相似,只是分配記憶體的地方不同

define巨集定義和const

define是在預編譯階段就定義的常量,不占用記憶體空間 const可以在程式的任何時候定義,是乙個全域性的常量,放在記憶體的static部分。define巨集定義沒有指定的型別,而const在定義時就指定了常量的型別。const int p p可變,p指向的物件不可變 int const p p可...

define巨集定義和const常量定義之間的區別

define部分 巨集不僅可以用來代替常數值,還可以用來代替表示式,甚至是 段。巨集的功能很強大,但也容易出錯,所以其利弊大小頗有爭議。巨集的語法為 define 巨集名稱 巨集值 注意,巨集定義不是c或c 嚴格意義上的語句,所以其行末不用加分號結束。作為一種建議和一種廣大程式設計師共同的習慣,巨集...

define巨集定義和const常量定義之間的區別

用巨集表示常數 假如我們要寫乙個有關圓的種種計算的程式,那麼 3.14159 值會被瀕繁用到。我們顯然沒有理由去改 的值,所以應該將它當成乙個常量對待,那麼,我們是否就不得不一遍一遍地寫3.14159這一長串的數呢?必須有個偷懶的方法,並且要提倡這個偷懶,因為多次寫3.14159,難免哪次就寫錯了。...