C/C++中,常数是怎么产生的?在内存中没有地址吗?

如,inta=5;那么5是从哪里来的,它在内存中有地址吗?我知道变量a是内存地址的抽象。我想知道赋值语句的具体执行过程。... 如,int a = 5;那么5是从哪里来的,它在内存中有地址吗?我知道变量a是内存地址的抽象。我想知道赋值语句的具体执行过程。 展开
 我来答
njzhangyizhe
2010-12-05 · TA获得超过1334个赞
知道小有建树答主
回答量:814
采纳率:0%
帮助的人:372万
展开全部
有的,5有四个字节的内存,在栈内存区里。a其实是这个内存区的别名而已。所谓常数赋值,就是把这个内存的值设成101,其余位补零。
dongxurr123
2010-12-06 · TA获得超过153个赞
知道小有建树答主
回答量:333
采纳率:0%
帮助的人:285万
展开全部
这方面没有什么实践,只能结合书本和自身的理解来回答一下
可以把 程序代码文件理解为 指导编译器生成 指令序列文件的文本文件,计算机实际上是按照一条一条指令序列来工作的。
高级语言中的 变量 ,例如本例中的 a ,在生成指令序列后 并没有 a 这个文本。
int a = 5 就表示 给某个内存地址上的 一个或几个字节 置为 5(实际上当然是二进制的,至于是什么样的编码形式,因所指定的类型不同而不同,这就是int a = 5和 float a = 5 的区别,这个学C语言应该会讲的。但最终在内存中的位序列是什么样的还和具体的CPU类型相关),后边的源代码中用到这个a的时候,实际上就是对这个地址上的值进行操作,
如 a += 1,在编译后的 指令序列中,就是将 a所代表的该内存地址上的值 送入CPU,自增1后又存回去(这里边又涉及到缓存,寄存器之类的)

综上所述,最终指令序列和a没有关系, a只是指导 编译器生成相应代码序列时使用。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式