wshy2010 发表于 2011-11-9 18:18:03

很简单的东西不明白,各位进来看看

用的ICCAVR编译器,mega8,简化后的程序如下:
#include <iom8v.h>
char data;
void main(void)
{data=OxD3;
if(data|0x01==0)
语句1;
}
data是全局变量,0xD3化为二进制是0b11010011,0x01的二进制是0b00000001,二者按位或的结果应该是0b11010011,因此(data|0x01==0)为假,语句1不应当被执行;但实际结果却是语句1被执行,为什么会这样,百撕不得骑姐啊!在线等,望回答!先谢了!

mandey 发表于 2011-11-9 18:20:23

if((data|0x01)==0)

如果这样的话,肯定会按你的意思去执行。

不要吝啬你的括号。

xiaowu191 发表于 2011-11-9 18:28:23

对,优先级的问题

http://cache.amobbs.com/bbs_upload782111/files_47/ourdev_693547IJNZ2F.jpg
(原文件名:优先级.jpg)

wshy2010 发表于 2011-11-9 19:50:19

非常感谢你们的回答,的确是这样的。

dexidz 发表于 2013-6-13 16:07:57

你发过的主题全是请教的,你还说这里冷清。

绿茶山人 发表于 2013-6-13 17:07:33

xiaowu191 发表于 2011-11-9 18:28 static/image/common/back.gif
对,优先级的问题




必须要顶!+1
页: [1]
查看完整版本: 很简单的东西不明白,各位进来看看