不定义变量是否节省内存?

treyklundt 2011-02-15 03:05:43
int a = 1, b = 2;
int c = a+b;
printf("%d", c);


int a = 1, b = 2;
printf("%d", a + b);


请问后一种写法是否比第一种节省内存空间呢?谢谢
知道这一点点可能没什么意义,但就是纯粹想知道答案。
...全文
73 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落的凡凡 2011-02-15
  • 打赏
  • 举报
回复
ca 我写了很长时间么?瞬间就结贴了?
失落的凡凡 2011-02-15
  • 打赏
  • 举报
回复
楼主自己知道没有意义,还问它做什么?下面的写法也许可以说是“节省内存”,但是是没有意义的节省内存。从系统的角度,即使它节省了也不会对运行时系统产生影响。这个变量是在栈上分配的,而栈的大小一般在程序加载的时候就固定了。除非有深递归,否则也很少出现栈溢出的现象。从编译器的角度,如果c只用到这一次,很可能在优化时就已经把它优化掉了。从软件工程和编码的角度,代码能够提供更好的自注释意义比多几个变量意义要大的多。
treyklundt 2011-02-15
  • 打赏
  • 举报
回复
谢谢,楼上两位。结帖
bdmh 2011-02-15
  • 打赏
  • 举报
回复
看差了

后一种是用寄存器eax来存储a+b,而第一种还要把eax的值存入c,多了一个c的空间
treyklundt 2011-02-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 maoxing63570 的回复:]

是的,后一种写法节省空间
[/Quote]
谢谢楼上,
但是a+b的结果不会存在一个临时的地方吗?若这样岂不同样占用内存?
bdmh 2011-02-15
  • 打赏
  • 举报
回复
一样的,看看汇编就清楚了
maoxing63570 2011-02-15
  • 打赏
  • 举报
回复
是的,后一种写法节省空间

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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