打印

const 的变量是否可以改变?

[复制链接]
1351|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
johnliu2000|  楼主 | 2013-7-17 11:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, ui, ge, ic, tc
最近开到一个代码,const 变量定义在一个函数内,但是却可以赋予新值,const变量不是不可以更新的吗?为什么这里要用const 变量?
#define ID_MASK=0x00ff;
satic led_manage(uint8 id )
{
    const uint8 realId =id &  ID_MASK;
    switch(realId )
    {
......

    }

}

相关帖子

沙发
soso| | 2013-7-17 11:32 | 只看该作者
const是常量,不可改变,从上面代码没看出哪里改变了它

使用特权

评论回复
板凳
原野之狼| | 2013-7-17 12:29 | 只看该作者
这个用法不是更新  是初始化

使用特权

评论回复
地板
ayb_ice| | 2013-7-17 13:36 | 只看该作者
那是初始化,不是改变,如果初始化都不行,那还有什么用呢

使用特权

评论回复
5
outstanding| | 2013-7-17 14:04 | 只看该作者
是初始化赋值啊,不希望被改变啊,

使用特权

评论回复
6
refee| | 2013-7-17 15:14 | 只看该作者
这里是初始化realId呀 楼主可参考
http://baike.baidu.com/view/1065598.htm

使用特权

评论回复
7
airwill| | 2013-7-17 16:28 | 只看该作者
const 其实只是个编译指令(属性定义).
当然有很多编译器会将 const 变量分配在 ROM 中. 那就真没有办法改变了.
但是象 冯 体现的处理器(如 x86) 有的是改变它的办法

使用特权

评论回复
8
johnliu2000|  楼主 | 2013-7-17 18:08 | 只看该作者
谢谢各位达人,原来是初始化时赋予初值,而不是更新。

那么这个const是放在 静态变量里吧?

使用特权

评论回复
9
sunhq02| | 2013-7-18 09:21 | 只看该作者
const和静态没关系
const仅仅是在语法检查上保证不被改写
也就是说,const仅仅是在编译的时候,编译器会检查语法上有没有改写它
编译完了之后,const没有什么有力的保证
除非const变量在物理上被放在rom里面了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

21

帖子

0

粉丝