布尔变量为 true,未传递 if (true) 条件 [closed]

boolean variable at true not passing if (true) condition [closed]

提问人:LPo 提问时间:11/17/2023 更新时间:11/17/2023 访问量:82

问:


编辑问题以包括所需的行为、特定问题或错误以及重现问题所需的最短代码。这将帮助其他人回答这个问题。

2天前关闭。

我有一个非常奇怪的问题,发生在一些单元测试脚本上。

我有这个代码示例:

bool test = foo.getOtherFoo()->getStatus();  // #1

if (test == true) // #2
{
    std::cout << "OK";
}
else
{
    std::scout << "NOK";
}

其中 getStatus() 返回内部布尔状态。我的方法似乎按照我期望的方式行事,因为测试在必要时会成为现实。

然后我有那个愚蠢的 if 条件,它应该是真的,因为我的 var 测试是真的。 但这就是奇怪的事情发生的地方。条件似乎是假的,因为打印了 NOK。

在点 #1 处,我的调试器将我的 var 测试识别为布尔变量,该变量为 true。

在点 #2 处,我的调试器将我的 var 测试识别为值为 80 (??) 的布尔变量

条件为 false,但条件为 true。if (test == true)if (test)

我正在使用 msvc 2019 在 Windows 上编译。

我尝试使用 gcc 在 linux 上编译相同的代码,一切正常。

有没有人遇到或听说过这样的问题?似乎是记忆问题,但我没有想法了。

也无法重现该问题,也无法尝试隔离该代码段,这就是为什么我只能为您提供这个相当简单的示例。

C 调试 gcc visual-c++ 布尔值

评论


答: 暂无答案