Re: [問題] 新手宣告變數的疑惑
※ 引述《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
04/29 23:53, 3F
推
04/30 15:43, , 4F
04/30 15:43, 4F
推
04/30 21:27, , 5F
04/30 21:27, 5F
推
05/01 23:54, , 6F
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
討論串 (同標題文章)