打印

单片机C语句问题

[复制链接]
1510|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
晓文88|  楼主 | 2014-11-21 22:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机是MSP430F149
代码如下:

void NF_WriteAdder3(unsigned int block,unsigned int page)
{
    unsigned long blockPage;   //页地址

    blockPage = (block << 14) + (page << 9);     //实际地址
  
   。。。。

请教,和以下写法结果相同吗?

     unsigned long  lTemp;

      lTemp = block;
      lTemp <<= 14;
      blockPage =  lTemp;   
      lTemp = page;
      lTemp  <<= 9;
      blockPage + =  lTemp;   
恳请指教。

相关帖子

沙发
slotg| | 2014-11-21 23:38 | 只看该作者
有可能是不一样的, unsigned int 是16位数据而 unsigned long 是32位数据. block 经过左移14位之后在unsigned int 类型下前面的几个位可能已经不见了.

使用特权

评论回复
板凳
wangch_sh| | 2014-11-22 08:31 | 只看该作者
试一下不就知道了。

使用特权

评论回复
地板
icecut| | 2014-11-22 08:41 | 只看该作者
编译器就是干这件事的.
将复杂指令拆分.然后调整顺序编译

使用特权

评论回复
5
ayb_ice| | 2014-11-22 10:09 | 只看该作者
数据可能溢出

使用特权

评论回复
6
ningling_21| | 2014-11-22 15:11 | 只看该作者
还是实际调试验证一下你的编译器

使用特权

评论回复
7
SBFX| | 2014-11-22 16:40 | 只看该作者
可能不同 block 是 unsigned int 移动14位,有的高位就移没了。

使用特权

评论回复
8
mugua521| | 2014-11-22 17:25 | 只看该作者
前排围观中,学习。。

使用特权

评论回复
9
sevenjul| | 2014-11-22 19:33 | 只看该作者
当然有可能不一样啦.

使用特权

评论回复
10
xmar| | 2014-11-22 21:52 | 只看该作者
一样.
blockPage = (block << 14) + (page << 9); 等价于:
blockPage = long (block << 14) + long (page << 9);

使用特权

评论回复
11
slotg| | 2014-11-23 11:21 | 只看该作者
xmar 发表于 2014-11-22 21:52
一样.
blockPage = (block

应该是不一样啊!

block 跟 page 会先依 int 的类别运算, 最后再转换成long的类别

使用特权

评论回复
12
qqljhang| | 2014-11-23 21:33 | 只看该作者
最保险就是直接上片子试  ,   理论分析往往不可靠,尤其是在开一些优化或是8位机上。。

使用特权

评论回复
评论
xmar 2014-11-24 11:45 回复TA
这个正解。不同的编译器结果不同。 
13
chenyu988| | 2014-11-24 11:25 | 只看该作者
要加强制转换吧,各位觉得呢
blockPage = ((unsigned long)block << 14) + ((unsigned long)page << 9);     //实际地址

使用特权

评论回复
14
chenyu988| | 2014-11-24 11:26 | 只看该作者
xmar 发表于 2014-11-22 21:52
一样.
blockPage = (block

先转换,在移位吧。

使用特权

评论回复
15
qqljhang| | 2014-11-24 22:04 | 只看该作者
qqljhang 发表于 2014-11-23 21:33
最保险就是直接上片子试  ,   理论分析往往不可靠,尤其是在开一些优化或是8位机上。。 ...

是的

使用特权

评论回复
16
晓文88|  楼主 | 2014-11-24 22:32 | 只看该作者
这是我的一个设备上的程序,实践证明是后者才能正确运行。当时基本锁定这个地方了,不过心里没底,又到坛子里找找理论依据。谢谢楼上各位。

使用特权

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

本版积分规则

个人签名:思想超越了宇宙,思考局限在利益。

35

主题

115

帖子

1

粉丝