IAR stm8 判断位的方法

写程序,用到位判断,开始时候,我是这么写的

if (a & 0x02) == 1)
{
}
else
{
}

a的第二位如果为1,则执行if中的程序,否则执行else中的程序
但编译完以后,事情的发展却残酷的背离了我的初衷。

结果改成以下语句后,事情才得到了平息。

if ((a >> 1 & 0x01) == 1)
{
}
else
{

先把位移1位,然后在和“1与操作”,这个时候,就可以得到想要的结果了
原因可能是由于c语言的语法造成的 ,但具体的原因由于没有看书,也不知道,写这个的目的是给同样困惑的小盆友们一个提示,在遇到这样的情况,试试以下的方法。

永不止步步 发表于11-30 09:17 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308317个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号