※ 引述《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