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