打印
[开发工具]

有点费解,keil编译器有点bug么?有图有真相

[复制链接]
2061|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 song19881218 于 2014-9-11 11:56 编辑


if语句里明明是0,为啥会进到else?&的优先级明显比==高啊!而加上括号就对了,编译器不识别优先级么?求解释
我错了。&有两个优先级,当用作取地址的时候优先级高,用作位与的时候优先级比较低

QQ图片20140911111235.jpg (189.61 KB )

QQ图片20140911111235.jpg
沙发
song19881218|  楼主 | 2014-9-11 11:27 | 只看该作者
木有人回答啊

使用特权

评论回复
板凳
diweo| | 2014-9-11 11:35 | 只看该作者
你这里的&显然是按位与,而不是取地址。看看你帖图的“==”的下面第2行。

使用特权

评论回复
地板
song19881218|  楼主 | 2014-9-11 11:43 | 只看该作者
diweo 发表于 2014-9-11 11:35
你这里的&显然是按位与,而不是取地址。看看你帖图的“==”的下面第2行。

就是按位与啊。前面那个是0,等式肯定成立啊!

使用特权

评论回复
5
diweo| | 2014-9-11 11:45 | 只看该作者
有的编译器在你编译的时候会建议你加括号的。

不过就算没有编译器的提示,在不确定优先级的情况下,加括号总是没错的。

新建图像.jpg (232.62 KB )

新建图像.jpg

使用特权

评论回复
6
diweo| | 2014-9-11 11:46 | 只看该作者
song19881218 发表于 2014-9-11 11:43
就是按位与啊。前面那个是0,等式肯定成立啊!

if(0& xx )
{
a();
}else
{
b();
}
你觉得是执行a()还是b()?

使用特权

评论回复
7
song19881218|  楼主 | 2014-9-11 11:50 | 只看该作者
diweo 发表于 2014-9-11 11:46
if(0& xx )
{
a();

我感觉会执行a()啊

使用特权

评论回复
8
zhaoyu2005| | 2014-9-11 11:50 | 只看该作者
本帖最后由 zhaoyu2005 于 2014-9-11 11:51 编辑
song19881218 发表于 2014-9-11 11:43
就是按位与啊。前面那个是0,等式肯定成立啊!

既然知道了作用,还看不到前面的优先级么?对于可能出错的执行顺序,最好按照需要的执行顺序加括号,最好养成这个习惯

使用特权

评论回复
9
song19881218|  楼主 | 2014-9-11 11:51 | 只看该作者
song19881218 发表于 2014-9-11 11:50
我感觉会执行a()啊

就是,我看错了。原来&取地址的优先级比==高,&而按位与优先级比==低。明白了,谢谢

使用特权

评论回复
10
diweo| | 2014-9-11 11:52 | 只看该作者
song19881218 发表于 2014-9-11 11:50
我感觉会执行a()啊

I 服了 you ...

使用特权

评论回复
11
song19881218|  楼主 | 2014-9-11 11:53 | 只看该作者
zhaoyu2005 发表于 2014-9-11 11:50
既然知道了作用,还看不到前面的优先级么?对于可能出错的执行顺序,最好按照需要的执行顺序加括号,最好 ...

明白了,原来&有两个优先级,没看清楚。呵呵

使用特权

评论回复
12
song19881218|  楼主 | 2014-9-11 11:53 | 只看该作者
diweo 发表于 2014-9-11 11:52
I 服了 you ...

明白了,原来&有两个优先级,没看清楚。呵呵

使用特权

评论回复
13
song19881218|  楼主 | 2014-9-11 11:54 | 只看该作者
diweo 发表于 2014-9-11 11:52
I 服了 you ...

谢了

使用特权

评论回复
14
mmuuss586| | 2014-9-11 12:19 | 只看该作者

明白了就好;

使用特权

评论回复
15
zhaofy521| | 2014-9-11 17:03 | 只看该作者
不是取地址

使用特权

评论回复
16
zhaofy521| | 2014-9-11 17:03 | 只看该作者
多加个括号也不费事

使用特权

评论回复
17
请叫我小石| | 2014-9-11 21:24 | 只看该作者
song19881218 发表于 2014-9-11 11:50
我感觉会执行a()啊

肯定执行b()啊

使用特权

评论回复
18
shcshc1234| | 2014-9-11 22:27 | 只看该作者
song19881218 发表于 2014-9-11 11:43
就是按位与啊。前面那个是0,等式肯定成立啊!

诶仔细看2那个是取地址
按位与运算是8

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

190

帖子

1

粉丝