常量編譯時
發布時間: 2023-07-15 21:22:11
⑴ C語言程序中的關於常量的計算是在編譯時進行的還是程序執行時進行的
編譯的時候,先會進行預編譯處理,就是把程序中所有的符號常量用數字常量替換,比如說你的例子中的N,注意只是發生替換,所有的計算都是在程序執行的時候進行的! C是面向過程的,每次執行都會重新計算一次!
⑵ C語言程序中的關於常量的計算是在編譯時進行的還是程序執行時進行的
編譯的時候,先會進行預編譯處理,就是把程序中所有的符號常量用數字常量替換,比如說你的例子中的N,注意只是發生替換,所有的計算都是在程序執行的時候進行的!
C是面向過程的,每次執行都會重新計算一次!
⑶ java中編譯期常量所指的是什麼
classInitalizedClass{
static{
System.out.println("!");
}
publicstaticintinititalize_varible=1;
}
{
publicstaticvoidmain(String[]args){
System.out.println(InitalizedClass.inititalize_varible);
}
}
上面的結果是:
!
1
classInitalizedClass{
static{
System.out.println("!");
}
//和上面的例子唯一的差異就是此處的變數INITIALIZED_VARIBLE被聲明為final
_VARIBLE=1;
}
{
publicstaticvoidmain(String[]args){
System.out.println(InitalizedClass.INITIALIZED_VARIBLE);
}
}
上面的結果是:
1
為什麼兩個例子執行結果不一樣,原因是第二個例子中的INITIALIZED_VARIBLE為編譯期常量,它不會導致類的初始化的
⑷ 什麼是常量表達式 書里說,常量表達式是編譯器在編譯時就能夠計算出結果的表達式. 不太理解,
舉例:
int n = 1; //這是確定無疑的,1是常量表達式,不可能變化
另一個例子:
int x = n + 1; //編譯器並不能根據這句就推斷出x一定等於2,因為極有可能在其他地方改變n的值,因此編譯器就不敢保證它是常量
⑸ java 中的編譯期常量是什麼使用它又什麼風險
編譯期常量就是所謂的 public final static 常量。
由於在編譯時就確定了值,在使用的場合會直接寫成值。而不是直接到原來的類中讀取。
這樣會有一個問題。 如果 類 A 提供了常量 類B使用了常量。並都進行了編譯。
然後,修改了類A的源碼,調用系統進行編譯。
系統發現類A是新的代碼,編譯了,類B是舊的代碼,就不進行編譯,使用舊的類。
由於類B中直接編譯進了舊的值,導致類A的修改無法反映到類B中。
這樣造成了風險。
熱點內容