コードに次の 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 が true ( => ~B が false) の場合でも、if ステートメントが評価されています。
実行時にループ内の B の値を確認しました。私は B=1 を得ます;
(~B ) の値を計算しようとすると、奇妙なことに 2 の値が表示されます (つまり、B = 1 の場合)。
なぜこうなった?