Re: [問題] 新手宣告變數的疑惑

看板C_and_CPP作者 (璀璨的代價)時間10年前 (2015/04/29 19:41), 10年前編輯推噓7(701)
留言8則, 8人參與, 最新討論串2/2 (看更多)
※ 引述《ny397789 (bi)》之銘言: : 開發平台(Platform): (Ex: VC++, GCC, Linux, ...) : C : 問題(Questio : 我是一個C 語言的初學者,沒有一點底子 : 我的問題感覺有點基本.....(書上寫的有點不懂...) : 就是,假使我設 : int num,s : s=100 : num=s+1 : num=s+2 : 為什麼num 可以 等於2個常數呢?? : 我的想法是:宣告一個變數,然後編譯器會給一個空間(4byte) 再寫入常數(s+1) : 那還有一個s+2 寫在哪??(空間內已經是s +1) : 如果是在一個變數,那總共會變成8byte嘛?? : 如果這樣的話,不就從頭到尾都用同一個變數就好...? : 理解力有點差,請各位見諒 int num,s // 宣告 sum與s為int變數 s=100 // 變數s=100 num=s+1 // 變數num=100+1 所以num=101 num=s+2 // 變數num=100+2 所以num=102 其實就是變數的值被覆蓋而已 要以空間來看的話 int num,s 宣告變數。給sum跟s變數各4Byte的空間 num s ┌───┐ ┌───┐ │ 值=? │ │ 值=? │ └───┘ └───┘ 4Byte 4Byte 要注意的是: 這時候兩個空間都不知道裝了什麼東西,編譯器不會幫你清空空間 需要使用運算或輸出的話,請給個初值之後再使用,不然你不知道會跑出什麼鬼東西 s=100 把100這個值放到變數s裡面 num s ┌───┐ ┌───┐ │ 值=? │ │值=100│ └───┘ └───┘ 4Byte 4Byte num=s+1 把s+1的值放到num裡面 (不管他裡面原本是什麼值,直接取代掉) 所以num=100+1 num=101 num s ┌───┐ ┌───┐ │值=101│ │值=100│ └───┘ └───┘ 4Byte 4Byte num=s+2 把s+2的值放到num裡面 (同上) num s ┌───┐ ┌───┐ │值=102│ │值=100│ └───┘ └───┘ 4Byte 4Byte --------------- 在沒有迴圈的情況下,被取代掉的值就像是變了心的女友,回不去了 女友的心裡面不會有同時住著兩個人這回事 女友的心永遠能裝下的就只有一個人,不會變大不會變小 當然,如果她是陣列的話,就可以裝好多工具人了QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.0.163 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1430307707.A.20A.html ※ 編輯: Bright (1.165.0.163), 04/29/2015 19:48:10

04/29 19:57, , 1F
04/29 19:57, 1F

04/29 20:14, , 2F
謝謝
04/29 20:14, 2F

04/29 23:53, , 3F
XD
04/29 23:53, 3F

04/30 15:43, , 4F
...QQ
04/30 15:43, 4F

04/30 21:27, , 5F
04/30 21:27, 5F

05/01 23:54, , 6F
XDDDD
05/01 23:54, 6F

05/02 15:10, , 7F
含淚推
05/02 15:10, 7F

05/03 11:52, , 8F
通常全域以及靜態整數會自動初始化為零,不過自行指定是好的
05/03 11:52, 8F
文章代碼(AID): #1LGCDx8A (C_and_CPP)
文章代碼(AID): #1LGCDx8A (C_and_CPP)