开发者社区> 问答> 正文

C语言中字符串常量要占内存,那普通的常量呢?例如整型常量

如int i;i=6; 这里我知道系统要为变量i分配4个字节,那6这个整形常量还需要单独分配内存吗?还是说6不用再单独分配内存,而只是作为一个整数存在i这个变量所占的内存中?
因为谭浩强的书上有这样一句原话“在程序中出现的常量是要存放在计算机的存储单元中的。这就必须确定分配给它多少字节,按什么方式存储。例如,程序中有整数12,在Visual C++ 6.0中会分配给它4个字节,按补码方式存储。”这书上的话不太懂,看着话的意思是就单单一个整数12,也要占4个字节,我如果写int i=12,那是不是总共要占8个字节(i占4个,12占4个?)

展开
收起
a123456678 2016-06-08 20:19:37 2459 0
1 条回答
写回答
取消 提交回答
  • 这个6会作为立即数写死在生成的代码中,不再占据额外的内存
    我觉得这种说法太过笼统,要说占内存也可以说占比如生成的代码中会有mov [i],12 这样的代码,程序运行过程中代码被映射到内存中,也就是占内存,至于i,如果是全局变量,那么会在程序加载到内存中时,就为i分配四个字节的内存,如果局部变量,程序运行过程中会根据编译生成的代码操作esp算是未局部变量申请内存,函数结束就释放了

    2019-07-17 19:32:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
内存取证与IaaS云平台恶意行 为的安全监控 立即下载
云服务器ECS内存增强型实例re6全新发布 立即下载
低代码开发师(初级)实战教程 立即下载