我的代码中有以下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为真,也会评估if语句(=> ~B为假) 我在循环执行时检查了B的值。 我得到B = 1;
奇怪的是,当我尝试cout(~B)的值时,它显示值为2.(即当B = 1时)。
为什么会这样?
答案 0 :(得分:5)
确保你知道自己想要什么。
~
是位操作符,用于翻转所有位。
!
是“NOT”的逻辑运算符。
答案 1 :(得分:1)
将~B改为!B。 这应该有希望工作
答案 2 :(得分:1)
C ++中的波浪号(〜)是Bitwise NOT Operator。这与Logical NOT Operator(!)不同。
~B
并不总是等于!B