keil c51中的右移运算符的使用注意

具体遇到的问题如下:  

假设有一个函数(函数原型为unsigned char test(void);),然后假设调用此函数的返回值是0xFF,然后执行如下语句:

temp=(test()<<4)>>4;
预期的结果应该是temp=0x0F,但实际上我得到的结果是0xFF(视编译器优化级别的不同可能不一定是这个值) 

那么如何才能得到预期的结果呢,建议采用以下语句来实现:

temp=test();
temp<<=4;
temp>>=4;

此条目发表在 ., 语言与设计 分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>