1)什麼叫常量表示式?
在編譯期間進行求值的表示式。
1、字面值常量是常量表示式;
如123,『a』,3.14等
2、跟字面值常量相關的一些表示式;
如123+3.14,2<<2等
3、在c++中用常量表示式初始化的const物件也是常量表示式,並且也是c++推薦的使用方式,而c語言不是。
如int const a=5;語句中a就是常量表示式
2)什麼地方會用到常量表示式?
就目前所知道的有三個,後面如果發現再新增。
1、靜態儲存變數需用常量表示式初始化;
ps:c語言靜態變數初始化中,可以把可執行檔案想要初始化的值放在變數將會使用的位置,
當可執行檔案載入到記憶體時,這個已經儲存了正確初始值的位置將賦值給那個變數,因此必須使用常量表示式初始化。而c++中靜態變數是動態分配的,即在程式執行時分配記憶體的,因此可以用變數對其進行初始化。
2、case標籤必須具有唯一的值,所以必須用常量表示式;
3、定義乙個陣列,陣列長度必須在編譯時確定,必須為乙個常量表示式
ps:為了便於維護,常使用#define為數值定義乙個符號,如#define size 50 int a[size];
有些編譯器允許宣告動態陣列,即用變數作為陣列的長度,但此時不能對其進行初始化,即int a=5;int b[a];√ 而int b[a]=;×
常量表示式
字面值 是乙個不能改變的值,如數字 字元 字串等。單引號內的是字元字面值,雙引號內的是字串字面值。字面值型別 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 ...