c 在C 中定義常量的兩種方法的比較

2021-09-08 01:52:37 字數 1064 閱讀 8251

常量是定以後,在程式執行中不能被改變的識別符號。c++中定義常量可以用#define 、const 這兩種方法。例如:

#define price 10 //定義單價常量10

const int price = 10; //定義單價常量10

其實用常量是有它的理由的,下面我們來看下面兩段程式對比

**#include

using namespace std;

#define pi 3.14159

//const double pi = 3.14159;

int main(int argc, char* ar**)

**#include

using namespace std;

#define pi 3.14159

//const double pi = 3.14159;

int main(int argc, char* ar**)

顯然如果我還要求球、圓柱體的面積等,用常量的好處就顯而易見,用常量的有下面一些好處:

1:增強程式的可讀性。用乙個有意義的常量**一串無意義的字串,顯然很多時候程式設計師忘了或是不理解這一串字串代表什麼意義。

2:如果很多地方用到像pi(3.14159)這樣的常量,難保輸入錯誤,尤其複雜的很長的字串時,而用常量則能一改而全部改變、減少出錯的機率。

其中#define是定義巨集變數,它其實是在編譯之前,由預處理指令把**裡面的巨集變數用指定的字串替換,它不做語法檢查,而constant 則是定義含有變數型別的常量。一般說來推薦使用constant定義常量,它在編譯時會做語法檢查。effective c++ 的條款1中:「盡量用編譯器而不用預處理」,因為#define經常被認為好象不是語言本身的一部分。而且有時候用巨集,會出現意想不到的輸出結果。

#define 與 const 的比較

(1) const 常量有資料型別,而巨集常量沒有資料型別。編譯器可以對前者進行型別安全檢查。而對後者只進行字元替換,沒有型別安全檢查,並且在字元替換可能會產生意料不到的錯誤(邊際效應) 。

(2) 有些整合化的除錯工具可以對 const 常量進行除錯,  但是不能對巨集常量進行除錯。

在C 中定義常量的兩種方法的比較

常量是定以後,在程式執行中不能被改變的識別符號。c 中定義常量可以用 define const 這兩種方法。例如 define price 10 定義單價常量10 const int price 10 定義單價常量10 其實用常量是有它的理由的,下面我們來看下面兩段程式對比 include usin...

在C 中定義常量的兩種方法的比較

常量是定以後,在程式執行中不能被改變的識別符號。c 中定義常量可以用 define const 這兩種方法。例如 define price 10 定義單價常量10 const int price 10 定義單價常量10 其中 define是定義巨集變數,它其實是在編譯之前,由預處理指令把 裡面的巨集...

在C 中定義常量的兩種方法的比較

常量是定以後,在程式執行中不能被改變的識別符號。c 中定義常量可以用 define const 這兩種方法。例如 define price 10 定義單價常量10 const int price 10 定義單價常量10 其中 define是定義巨集變數,它其實是在編譯之前,由預處理指令把 裡面的巨集...