运行VS2013调试器与CommandLine

时间:2016-06-17 21:25:00

标签: visual-c++ visual-studio-2013

通过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),而命令行却挥之不去?

2 个答案:

答案 0 :(得分:2)

在函数范围中,语法size_t count;不会初始化变量。使用size_t count{};

有关初始化的更多信息,请参阅 Variable initialization in C++

答案 1 :(得分:1)

由于构建配置的性质,您的Debug构建可能将count设置为0,但在Release构建中则不然。您需要将计数初始化为零。始终初始化变量。