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

[复制链接]
3363|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

粉丝
快速回复 在线客服 返回列表 返回顶部