看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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
Jimmy0301: 推 04/29 19:57
ny397789: 謝謝 04/29 20:14
s1000: XD 04/29 23:53
jaid: ...QQ 04/30 15:43
pili100: 推 04/30 21:27
firejox: XDDDD 05/01 23:54
eternal0123: 含淚推 05/02 15:10
dirkc: 通常全域以及靜態整數會自動初始化為零,不過自行指定是好的 05/03 11:52