常量表示式 const constexpr

2022-05-06 16:12:10 字數 1063 閱讀 3052

一、常量表示式

1、概念

(1)指值不會改變,在編譯過程中就能得到計算結果的表示式;

(2)編譯器會在編譯階段將常量替換為對應的值;

2、判別

(1)字面值屬於常量表示式

(2)用常量表示式初始化的const物件也是常量表示式

(3)是不是常量表示式由資料型別與初始值決定

const

int max_files = 20

;const

int limit = max_files +20; //

是int staff_size = 70

;//不是

const

int sz = get_size(); //

不是

二、constexpr變數

1、說明:

(1)c++11新規定:允許將變數宣告為constexpr型別,以便讓編譯器來驗證變數是否是乙個常量表示式

(2)用constexpr宣告的變數一定是個常量表示式,而且必須由常量表示式初始化;

2、constexpr 常量指標

(1)constexpr會將指標物件置為頂層const

const

int * p = nullptr; //

指向整形常量的指標

constexpr int * q = nullptr; //

本身是個常量指標

constexpr const int * p0 = nullptr;

(2)constexpr指標必須是nullptr、0、或者是儲存在某個固定位址中的物件,不可以是函式體中變數;

(3)constexpr指標跟常量指標一樣,既可以指向常量,也可以指向非常量

//

j必須定義在函式體之外!全域性變數?

int j = 0

;constexpr

int * p = &j;

常量表示式

字面值 是乙個不能改變的值,如數字 字元 字串等。單引號內的是字元字面值,雙引號內的是字串字面值。字面值型別 literal type 算數型別 引用和指標等。常量表示式 const experssion 是指 1 值不會改變 並且 2 在編譯過程就能得到計算結果的表示式。字面量屬於常量表示式,用常...

常量表示式

為了使函式獲取編譯時計算的能力,你必須指定constexpr關鍵字到這個函式。constexpr int multiply int x,int y 將在編譯時計算 const int val multiply 10,10 除了編譯時計算的效能優化,constexpr的另外乙個優勢是,它允許函式被應用...

解析常量表示式

define crt secure no warnings include include include intisnum char ch void eatspace char str char roundbmatch char str,int pindex double getnum char ...