有一行代码
while(!(IFG2&UCA0TXIFG))
IFG2
是一个8位寄存器,其第二个LSB为UCA0TXIFG
。在这种情况下,我认为while()的参数必须是布尔值。如何将IFG2&UCA0TXIFG
作为布尔运算进行求值? IFG2会被其LSB评估吗?
LSB是另一个中断标志UCA0RXIFG
。如果上述情况属实,为什么程序员不会只写UCA0RXIFG&UCA0TXIFG
?
答案 0 :(得分:0)
如何将IFG2和UCA0TXIFG评估为布尔运算。
不会。
正常评估。结果是一个整数,然后在布尔上下文中 - 逻辑否定。在布尔上下文中,任何非零整数都为真。
为什么程序员不会写UCA0RXIFG& UCA0TXIFG?
如果我理解正确,那些只是两个常量:用于获取状态的特定位的位掩码。由于它们是常量,因此它们不依赖于系统状态,结果将是无限循环。
您应该查看Bitwise operators in C。