常量存储问题

flcnrcn 2019-01-27 10:36:10
常量到底存在哪里呢?
比如:
int a, b;
a = b +3;
这个3存在哪里。
再如:
#define PI 3.1415920
这个PI存哪里。

谢谢!
...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
flcnrcn 2020-04-01
  • 打赏
  • 举报
回复
引用 2 楼 赵4老师的回复:
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
老师你这课怎么下架了?
bifanwen 2020-04-01
  • 打赏
  • 举报
回复
这个3? 3是常数,从来不存储的啊。 最多只是个临时变量,不过数在计算机里会被存成二进制,注意下
lin5161678 2019-01-28
  • 打赏
  • 举报
回复
引用 6 楼 自信男孩 的回复:
3不存储,看汇编就可以知道,它是一个立即数。

3.1415925的PI可以认为是存储在只读数据段(数据段分为只读和可读可写的两部分, Linux)
纠正 3.1415926 的确会占用内存
而PI 还是不存的
预编译之后 不存在
编译器看不到PI这个符号更别说存了
lin5161678 2019-01-28
  • 打赏
  • 举报
回复
引用 6 楼 自信男孩 的回复:
3不存储,看汇编就可以知道,它是一个立即数。

3.1415925的PI可以认为是存储在只读数据段(数据段分为只读和可读可写的两部分, Linux)
没有
3.1415925 和 3 一样
至于PI 不存在
自信男孩 2019-01-28
  • 打赏
  • 举报
回复
3不存储,看汇编就可以知道,它是一个立即数。

3.1415925的PI可以认为是存储在只读数据段(数据段分为只读和可读可写的两部分, Linux)
独孤过 2019-01-27
  • 打赏
  • 举报
回复
PI是宏,在预编译的时候,PI会被替换成3.1415920 对于3、3.1415920这些立即数,采用立即寻址方式,在执行至相应语句时,直接用mov指令存放至变量地址,或者用mov存放至寄存器,进行运算
赵4老师 2019-01-27
  • 打赏
  • 举报
回复
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
lin5161678 2019-01-27
  • 打赏
  • 举报
回复
不存
三鸿 2019-01-27
  • 打赏
  • 举报
回复
存储在内存中,数据段中。。
棉猴 2019-01-27
  • 打赏
  • 举报
回复
从反汇编的代码中可以看到,对于a=b+3这种表达式,3并没有存储在哪个寄存器中,而是直接使用,就是楼上朋友说的,立即数寻址

对于#define PI 3.14.1920
这种宏,从反汇编的代码中可以看到,是保存在内存中的

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧