constexpr和常量表示式

2021-09-26 07:49:51 字數 643 閱讀 1547

常量表示式是指不會改變且在編譯過程中就能計算出來的表示式。

字面值是常量表示式,用常量表示式初始化的const物件也是常量表示式。

乙個物件或表示式是不是常量表達是由它的資料型別和初始值共同決定。

例:

const

int a =10;

//常量表示式

const

int b = a +5;

//常量表示式

int c =3;

//不是常量表示式

const

int d =f(

);//不是常量表示式

constexpr

int*p =

&c;//p是乙個常量指標,指標p不可變

const

int*p1 =

&c;//錯誤,p1需要指向乙個常量

說明:雖然c有字面值(常量表示式)初始化,但它自己並不是const的,也就是在程式執行時是可變的,因此不是常量表示式,d雖然是const的,但是由於它在程式執行時才能知道是多少,不是由常量表示式對其初始化,故也不是常量表示式。

c++的標準規定,可以將變數宣告為constexpr型別,這樣在編譯的時候編譯器就會檢查變數的值是否是乙個常量表示式。

constexpr函式:明天再記錄

C 常量表示式和constexpr

常量表示式是指不會改變且在編譯過程中就能得到計算結果的表示式,比如下面的10,value1 1,value1 value2都是常量表示式。int main constexpr和const很像,有如下區別 int main int main int main constexpr函式指能用於常量表示式的...

10 初識constexpr和常量表示式

常量表示式 是指值不會改變並且在編譯過程就能得到計算結果的表示式。顯然字面值屬於常量表示式,用於表示式初始化的const物件也是常量表示式。1 判斷乙個變數是不是常量表示式 乙個物件 表示式 是不是常量表達由資料型別和初始值共同決定,例如 const int max files 20 man fil...

常量表示式

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