通过visual studio调试器运行以下代码成功执行。 "计数"变量将默认初始化为0.
如果我通过命令行运行,我会得到随机行为,而我的EXPECT_EQ(...)会失败。
size_t expectedCount = actual.length() - expected.length();
position += 12;
size_t count;
for (size_t i = position ; i < actual.length(); ++i) {
if (actual.at(i) == 'a')
++count;
}
EXPECT_EQ(expectedCount , count);
我假设这是因为Visual Studio给了我一个干净的堆栈(一切都是0),而命令行却挥之不去?
答案 0 :(得分:2)
在函数范围中,语法size_t count;
不会初始化变量。使用size_t count{};
有关初始化的更多信息,请参阅 Variable initialization in C++
答案 1 :(得分:1)
由于构建配置的性质,您的Debug构建可能将count设置为0,但在Release构建中则不然。您需要将计数初始化为零。始终初始化变量。