今天在调试代码的时候,发现一个bool值判断式的返回值一直有问题,明明两个值都是true,但是判断的返回值却是false,一直进不了期望的分支。
if (m_active == active)
{
// do sth.
}
else
{
// do sth.
}
后面打断点跟踪,发现其中一个值为true(205),另一个值是true,没有下标,如下图所示:
这让我很困惑,查了资料之后发现,这与VS本身的初始化值有关系:
当一个函数的参数返回值是bool的时候,如果将这个函数表达式直接作为参数传递给其他,则使用的是0XCD来初始化它,也就是205。
解决方法:
1. 采用变量进行赋值;
2. 使用!!进行类型转化之后再判断。