c++中布尔类型的奇怪行为
Strange behavior of Boolean type in c++
我的代码中有以下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时)。
为什么会发生这种情况?
确定你想要什么
~
是位运算符,用于翻转所有位。
!
是"NOT"的逻辑运算符。
将~B改为!B。希望能行
c++中的波浪号(~)是位NOT操作符。这与逻辑非操作符(!)不同。
~B
并不总是等于!B
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 创建类似于布尔值的变量类型
- C++:将值赋值给原始数据类型(例如布尔值)是原子操作吗?
- 如何创建两个具有相同名称和不同返回类型并基于布尔参数运行的函数
- 无法将'Class::operator=='从"布尔"类型(类::)(类*)转换为"布尔"类型
- 给定仅包含布尔类型成员的结构的两个对象 s1 和 s2,只要 s1 的成员为 true,请检查 s2 的每个成员是否为真
- 为什么当我将真或假分配给布尔类型的向量时,下面的程序给我错误?
- 为什么Visual C++ 2008在我(不小心)使用布尔类型时没有抱怨
- 为什么 int vs 布尔类型检查失败
- 布尔类型的参数不匹配
- 是条件表达式C++总是布尔类型
- GCC 编译器上布尔类型的 C 和C++语言的默认初始值设定项是 64 而不是 0。这是编译器错误?
- 在标准C++中是否存在固定宽度的布尔类型
- 将Enum转换为布尔类型
- 布尔类型的递归
- c++中布尔类型返回函数的默认返回值
- 布尔类型操作
- 如何根据布尔类型成员函数的返回值调用结构成员函数
- C++字符串(常量字符[1])到布尔类型的转换 - 原因/解释和后果
- c++中布尔类型的奇怪行为