※ 引述《ji3g45j (pig)》之銘言:
: ※ 引述《datagram ()》之銘言:
: : int main()
: : {
: : int a=4;
: : float uu[a]={0};
: : printf("%f",uu[3]);
: : return 0;
: : }
: : 這個寫法有錯 ,應該是錯在 float uu[a]={0} 這一行
: : 為什麼已經令了 a=4 ,卻不能 把a之值 放入 uu[4]呢?
: : 有沒有什麼方法可以解決這種問題?
: : 因為我在寫 header檔時, function(X,X,G)
: : G是一個int,要丟進此function運作,而此function中設了一個array
: : int AA[G]={0}; ==>這會出現錯誤。這種錯誤跟上面也是一樣的錯誤。
: 實際上的編譯結果會讓uu[a]變成uu[4],因為a是常數(如果你編譯器不笨的話)
: 但uu[4]所能索引的範圍是uu[0]~uu[3],因此uu[4]是有問題的
: 而你第2個問題必須要用動態記憶體配置,因為你的G是變數
老實講我是不太清楚C是怎麼處理的(因為C裡面比較常用#define)
不過C++就很硬, 沒const就是非常數
有掛const就算mutable都會給你過(run-time會不會死我就不知道了)...
-
真的有compiler會自動去判斷a=4 const? =_=a?
總覺得直接吐一個compile-time error比較安全直接...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.163.156.62