带字节的布尔运算

时间:2013-11-07 16:29:35

标签: c boolean

有一行代码

while(!(IFG2&UCA0TXIFG))

IFG2是一个8位寄存器,其第二个LSB为UCA0TXIFG。在这种情况下,我认为while()的参数必须是布尔值。如何将IFG2&UCA0TXIFG作为布尔运算进行求值? IFG2会被其LSB评估吗?

LSB是另一个中断标志UCA0RXIFG。如果上述情况属实,为什么程序员不会只写UCA0RXIFG&UCA0TXIFG

1 个答案:

答案 0 :(得分:0)

  

如何将IFG2和UCA0TXIFG评估为布尔运算。

不会。

正常评估。结果是一个整数,然后在布尔上下文中 - 逻辑否定。在布尔上下文中,任何非零整数都为真。

  为什么程序员不会写UCA0RXIFG& UCA0TXIFG?

如果我理解正确,那些只是两个常量:用于获取状态的特定位的位掩码。由于它们是常量,因此它们不依赖于系统状态,结果将是无限循环。

您应该查看Bitwise operators in C