C 常量摺疊

2021-07-05 03:34:18 字數 750 閱讀 1139

c 中const 常量用法

說明:c語言中const 常量可以很容易地被改變

#include 

#include

void main()

,c++編譯器進行語法分析的時候,將常量表示式計算求值, 並用求得的值來替換表示式,放入常量表,是

因為編譯器在優化的過程中,會把碰見的const全部以內容替換掉

(跟巨集替換類似: #define pi 3.1415,用到pi時就用3.1415代替)

說明3:常量摺疊發生在預編譯階段,在執行階段,a的資料確實會被改變,可以單步除錯檢視記憶體看到。但讀常量a時由於編譯器的優化總是讀到其初始化時候的數值。

下面的例子說明了編譯器優化的存在,

#include 

using

namespace

std;

void main()

列印結果:

總結:常量摺疊現象是c++編譯器的一種優化,如果不想要編譯器的這種優化,可以採用c++提供的關鍵字volatile

#include 

using

namespace

std;

void main()

c 中的常量摺疊

先來看乙個例子 include int main 這就是編譯器的 常量摺疊 在作怪啦!常量摺疊 就是在編譯器進行語法分析的時候,將常量表示式計算求值,並用求得的值來替換表示式,放入常量表。可以算作一種編譯優化。編譯器在優化的過程中,會把碰見的const全部以內容替換掉 跟巨集替換似的 define ...

C 的常量摺疊(三)

背景知識 符號表是一種用於語言翻譯器中的資料結構。在符號表中,程式源 中的每個識別符號都和它的宣告或使用資訊繫結在一起,比如其資料型別 作用域以及記憶體位址。符號表在編譯程式工作的過程中不斷收集 記錄和使用源程式中一些語法符號的型別和特徵等相關資訊。這些資訊一般以 形式儲存於系統中。如常數表 變數名...

常量摺疊解析

include using namespace std intmain test的位址為 009afa44 test的值為 10 p的位址為 009afa44 p的值為 20 int main void const tt s cout s s.a tt result const cast s res...