首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Codewarrior进行位移位时存在的问题

使用Codewarrior进行位移位时存在的问题
EN

Stack Overflow用户
提问于 2013-09-21 02:59:59
回答 1查看 295关注 0票数 0

我在Codewarrior中工作,并尝试执行向左(>>)的位移位到一个“字符转换”的整型变量,即:

代码语言:javascript
复制
int checksum=0x017b;

char checksum_H=(char) checksum >>8; //higher part of checksum
char checksum_L=(char) checksum;     //lower part of checksum 

问题是,我实际上可以为checksum_L获得正确的值,但对于checksum_H,我得到的是0x00...只有当我尝试使用">“而不是">>”执行移位时,我才会得到0x01的正确结果...

你们有谁知道为什么会发生这种事吗?

EN

回答 1

Stack Overflow用户

发布于 2013-09-21 04:24:35

您正被操作符优先级所困扰。在表达式中:

代码语言:javascript
复制
char checksum_H=(char) checksum >>8;

首先将checksum转换为char,从而丢失除低位字节以外的所有字节,然后右移8位,从而清除剩余的8位,因此返回0。

因此,它需要:

代码语言:javascript
复制
char checksum_H = (char)(checksum >> 8);

以便先进行移位,然后再进行造型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18924007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档