打印

关于C语言中(LONG)的用法?

[复制链接]
2682|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xzhenggen|  楼主 | 2007-1-29 15:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用TI提供的例程中我们经常会看到使用强制类型转换的语句(LONG),例如下面的程序时对事件管理器定时器1的周期寄存器进行配置,我们在TI的例程中看到如下描述:
        int  m_period;
        long tmp;
        tmp = (long)(p->n_period*p->Mfunc_p);Mfunc_p=7FFF
        m_period = (int)(tmp>>16) + (int)(p->n_period>>1);
        EvaRegs.T1PR = m_period; 
在上面程序中p->n_period*p->Mfunc_p已经溢出,后经LONG强制转换以后,高十六位就变成FFFF,不知这样做的目的是什么原因,同时从表面看起来好像这段程序时给p->n_period*除了一个2,不知这样做有什么意义?请高手指教!谢谢!

相关帖子

沙发
lishuanghua| | 2007-1-30 08:08 | 只看该作者

声明为unsigned long

转换为long后会扩展符号位

使用特权

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

本版积分规则

55

主题

529

帖子

1

粉丝