#include
using
namespace std;
intmain()
test的位址為:009afa44 test的值為:10
p的位址為: 009afa44 p的值為:20
int
main
(void);
const tt s =
; cout <<
"[s]:"
<< s.a <<
","/輸出 1,2
tt *result =
const_cast
>
(&s)
; result-
>a =
10;
result-
>b =20;
cout <<
"[s]:"
<< s.a <<
","/輸出 10,20
cout <<
"[r]:"
<< result-
>a <<
","<>b << endl;
//輸出 10,20
getchar()
;return0;
}
[s]:1,2
[s]:10,20
[r]: 10,20
對於常量摺疊這種編譯器預處理,只對內建型別有效,對於自定義型別就沒有效果。
#include
using
namespace std;
intmain()
i的位址是:003af808 i的值是:10
C 常量摺疊
c 中const 常量用法 說明 c語言中const 常量可以很容易地被改變 include include void main c 編譯器進行語法分析的時候,將常量表示式計算求值,並用求得的值來替換表示式,放入常量表,是 因為編譯器在優化的過程中,會把碰見的const全部以內容替換掉 跟巨集替換類...
c 中的常量摺疊
先來看乙個例子 include int main 這就是編譯器的 常量摺疊 在作怪啦!常量摺疊 就是在編譯器進行語法分析的時候,將常量表示式計算求值,並用求得的值來替換表示式,放入常量表。可以算作一種編譯優化。編譯器在優化的過程中,會把碰見的const全部以內容替換掉 跟巨集替換似的 define ...
C 的常量摺疊(三)
背景知識 符號表是一種用於語言翻譯器中的資料結構。在符號表中,程式源 中的每個識別符號都和它的宣告或使用資訊繫結在一起,比如其資料型別 作用域以及記憶體位址。符號表在編譯程式工作的過程中不斷收集 記錄和使用源程式中一些語法符號的型別和特徵等相關資訊。這些資訊一般以 形式儲存於系統中。如常數表 變數名...