[英]C operator Precedence == and &
我对图书馆做类似的事情感到很困惑:
while ( func() & DEFINED_CONST == DEFINED_CONST )
{
...
}
我正在编译 C99 严格的 ansi。 我认为==
的优先级高于&
。 如果是这种情况,则首先评估DEFINED_CONST == DEFINED_CONST
。 这完全是胡说八道。 由于这个例子来自一家我认为不会提供这种废话的公司,所以我问我,我的知识滞后在哪里,我哪里做错了。
这样做是有意义的: (func() & DEFINED_CONST) == DEFINED_CONST
,但由于==
的优先级更高,我认为它会像func() & (DEFINED_CONST == DEFINED_CONST)
一样被评估。
那我怎么了。
对于背景, func()
正在读取一个寄存器。
是的,你是对的,该代码可能是错误的,它与
func() & (DEFINED_CONST == DEFINED_CONST)
可能代码应该是
(func() & DEFINED_CONST) == DEFINED_CONST
如果你编译你的代码,编译器会告诉你问题是什么: https://godbolt.org/z/61edYq
目前,此表达式检查是否在 func 返回的值中设置了 LSBit。
你可以做什么:
while ( (func() & DEFINED_CONST) == DEFINED_CONST )
while ( func() & DEFINED_CONST)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.