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

作者: Bright (璀璨的代價)   2015-04-29 19:41:43
※ 引述《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
作者: Jimmy0301 (Jimmy)   2015-04-29 19:57:00
作者: ny397789 (bi)   2015-04-29 20:14:00
謝謝
作者: s1000 (s1000)   2015-04-29 23:53:00
XD
作者: jaid (jaid)   2015-04-30 15:43:00
...QQ
作者: pili100 (zelda)   2015-04-30 21:27:00
作者: firejox (Tangent)   2015-05-01 23:54:00
XDDDD
作者: eternal0123 (蒼穹)   2015-05-02 15:10:00
含淚推
作者: dirkc (3781615)   2015-05-03 11:52:00
通常全域以及靜態整數會自動初始化為零,不過自行指定是好的

Links booklink

Contact Us: admin [ a t ] ucptt.com