我无法理解断言声明的性质
我认为我的程序运行不正常,但是当我将主程序打印出我的程序返回给我的返回值时,这是我的断言声明应该接受的确切值。我不知道发生了什么事。我将该函数复制粘贴到另一个文件中,并复制粘贴我的断言语句,这次不同的断言案例有效(有些案例不起作用,现在正在工作,有些案例有效,现在不用了#39 ; T)。 当我通过调试器时,似乎assert语句导致某个逻辑语句
当有逻辑时,有时不工作。我不明白为什么......有人可以向我解释一下吗?
答案 0 :(得分:2)
问题是您在removeDuplicatedValues
内部修改了传递的数组,因此首先assert((removeDuplicatedValues(duplicates1, 5)) == 1);
断言成功,但是当您使用相同的数组assert((removeDuplicatedValues(duplicates1, 4)) == 1);
调用下一个断言时,它将失败,因为重复项已被删除从那个数组。所以你应该重写你的测试只使用一次数组(甚至切换到专用的单元测试框架):
{
string duplicates[7] = { "kek" , "hello" , "kek" , "daisy" , "bear" , "bear" , "bear" };
assert((removeDuplicatedValues(duplicates, 5)) == 1); // ok
}
{
string duplicates[7] = { "kek" , "hello" , "kek" , "daisy" , "bear" , "bear" , "bear" };
assert((removeDuplicatedValues(duplicates, 4)) == 1); // ok
}