关于c语言中int i=10这个语句有关的立即数赋值的问题

对于int i=10这个语句,我清楚的记得老师说过这语句定义了一个整型局部变量i,并且被初始化为10,其中i是变量,10是常量,但是编译器并不将10放入常量区(和字符串常量不同,字符串常量是放在常量区的),而是在指令中直接通过立即数赋值,这是因为编译器认为普通的整型、浮点型或字符型常量在使用的时候是可以通过立即数来实现的,没有必要额外存储到数据区,如此节省了存储空间和运行时的访问时间。
但是立即数是什么意思我不太明白,老师简单提过,但我忘了,但是我又很想知道,不知道有人能否通俗一点的解释一下立即数这个问题吗?我猜立即数是不是寄存器里的?用完就扔?不对的话请指正

立即数这个概念是寻址方式里面的。int i=10;立即数也不是放在寄存器里的。在指令系统中,int i=0;这行代码要具体执行的话指令系统要翻译一哈(相当于int这个东西都是后来人为规定的,= +-这些符号都是人为规定而已,但是你要机器认识你这个东西,指令系统就要做一些映射处理)。翻译过后机器硬件就知道你这条语句是什么意思了啦。立即数的意思就是指令中就带有数据,不需要到其他地方去取了,直接把这个数据放到变量内存就行了。你猜在寄存器里,用完就扔,这个是寄存器寻址,意思是说这个寄存器里有我们需要的参数你来取一哈,立即数的数据就在指令里。你看看明白不。你可以百度哈立即数寻址方式。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-03-23
立即数是指的是在指令中可以直接指定的操作数,不需要寄存器间接访问获取,比如汇编中的 mov ax,10;其中10就是立即数

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网