看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev c++,VS 問題(Question): 一開始是遇到了這個問題 int a = 10; int b = a; int main(){return 0;} 在C是不行的,錯誤訊息: initializer element is not constant C++則沒問題 所以我改成 const int a = 10; int b = a; int main(){return 0;} 依舊是不行 查了一下知道了大概的理由,但還是有點不知所以 看完後的理解是: C在初始化全域變數時需要constant expressions,因為他是存在Data segment 然後在C++初始化全域變數時則不需要 至於加了const後還是不行則是因為在C裡不算是標準的constant expressions 他需要compile-time constant(全域變數是在compile time初始化的) (以上是從stackoverflow不同回答拼湊出來的想法 不知道有沒有哪裡理解錯?或是能幫我多做補充的 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 134.208.41.23 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1451194952.A.86D.html
fr3ak: 先不說全域變數怎麼起始了, 有聞到臭味嗎? 12/27 14:33
fr3ak: 相關廢文 http://goo.gl/sP6KAG 12/27 14:34
剛剛有看到這篇 想說fr3@k 怎麼這麼眼熟XD ※ 編輯: NaiveRed (134.208.41.23), 12/27/2015 14:37:07
fr3ak: 剛數了一下, 其實有四篇. 是說我也太喜歡全域物件了吧!? XD 12/27 14:44
longlongint: 原本 b=a 是程式執行期間才能做的事 12/27 16:07
overhead: 執行期才知道a是甚麼 所以當然在執行期才能做b=a 12/27 18:21
longlongint: 然後 C++ 支援 class, 建構子裡面有更多比 b=a 噁心 12/27 23:44
longlongint: 的東西 12/27 23:44
legendmtg: 好久沒看到fr3@k了@@ 12/28 01:53
fr3ak: legendmtg, 慢慢要浮出水面換氣了 :-) 12/28 10:25
legendmtg: cout會再辦嗎 雖然現在人不在台灣了orz 12/29 00:52
fr3ak: 先等我恢復多點元氣再說 QQ 有人願意幫忙當然是更好 12/29 12:39
descent: 期待 cout 12/29 22:34