小编Nis*_*hal的帖子

布尔类型在c ++中的奇怪行为

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

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

假设布尔变量,

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

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

奇怪的是,当我尝试cout(~B)的值时,它显示值2.(即当B = 1时).

为什么会这样?

c++

1
推荐指数
1
解决办法
106
查看次数

标签 统计

c++ ×1