c 的const常量優化

2021-08-15 10:13:16 字數 580 閱讀 8651

const

int a = 10;

int &b = const_cast

(a);

b = 20

cout

<< a << " "

<< b << endl;

輸出為10 20

原因如下:

c++常量優化策略

a為const在編譯階段由於編譯器優化策略,會直接將上下文中出現a的地方替換掉。因而編譯結束時實際

語句相當於這樣:

cout

<< 10

<< " "

<< b << endl;

如此一來,執行期間修雖然通過a的引用b修改了a的值,實際上只會影響b的值。而a在編譯階段其在上下文中已經被替換,等同於巨集

如果要強制a可以修改,則需要告訴編譯器不做優化,即新增volatile關鍵字

volatile

const

int a = 10;

則編譯器不做優化。

輸出為20 20

關於C 中的常量const

一 為什麼會有const,它有什麼用?加了const的變數只可讀不可寫。如 指標常常是邊讀邊移動,而不是邊寫邊移動,許多函式引數是唯讀不寫的。一 const的不同位置有什麼區別?char constcp 到char的const指標 charconst pc1 到const char的指標 const...

C 常量const簡單總結

初學c 簡單總結一下,又不對的地方希望大神指正 1.物件為常量,物件不可變,被指向的指標為常量 const double minwage 1.2343 物件一旦確定,不能改變,不能對其進行賦值,定義的時候就要把值賦好 const double pc minwage 指標位址為常量,指向minwage...

const 常量與 define常量的區別

c 中的常量可以使用const定義,也可以使用 define巨集定義的方式 二者區別如下 區別 1.const定義的常量有自己的資料型別,編譯器可以對其進行嚴格的型別檢查 但是define定義的巨集常量沒有資料型別,執行時只會對其進行字元替換,不會進行型別檢查 2.const定義的常量,在程式執行時...