今天调程序(Keil C),怎么调都通不过,后来在debug里面发现了如下问题。但是我没有搞明白这到底是怎么回事。希望大家有空看看,指点一下。
我得到的经验和教训就是,不管表达式多简单,优先运算的一定加括号。
看下面的两个表达式:(一下表达式和结果是在OutPut Window 的Command选项卡里输入和得到的)
表达式一:(dat2[0]&temp)==0
运算结果:0x0001
表达式而:dat[0]&temp==0
运算结果:0x0000
其中,dat2[0]的值是0x00,temp的值是0x01。
而输入dat2[0]&temp的结果是0x0000。
然后,我有测试了一下两个表达式:
表达式一:0x00&0x01==0
运算结果:0x0000
表达式二:(0x00&0x01)==0
运算结果:0x0001
这是什么原因呢? |