1

我的代码中有以下 if 语句:

~(( APQState  == dot11->tempState[0] ) &&
  ( STAQState == dot11->tempState[1] ) &&
  ( tempk1    == dot11->tempState[2] ) &&
  ( tempk2    == dot11->tempState[3] ) &&
  ( tempk3    == dot11->tempState[4] ))

假设布尔变量,

B = ( APQState  == dot11->tempState[0] ) &&
    ( STAQState == dot11->tempState[1] ) &&
    ( tempk1    == dot11->tempState[2] ) &&
    ( tempk2    == dot11->tempState[3] ) &&
    ( tempk3    = =dot11->tempState[4] )

即使 B 为真(=> ~B 为假),也会评估 if 语句。
我在执行时检查了循环内 B 的值。我得到 B=1;

奇怪的是,当我尝试计算 (~B ) 的值时,它显示的值为 2。(即当 B = 1 时)。

为什么会这样?

4

3 回答 3

5

确保你知道你想要什么。

~ 是位运算符来翻转所有位。

!是“NOT”的逻辑运算符。

于 2012-12-28T18:49:54.280 回答
1

将 ~B 更改为 !B。这应该有希望工作

于 2012-12-28T18:50:34.343 回答
1

C++ 中的波浪号 (~) 是按位非运算符。这与逻辑非运算符 (!) 不同。

~B并不总是相等!B

于 2012-12-28T18:52:29.057 回答