我无法理解断言语句的性质
我以为我的程序没有正常工作,但是当我让我的 main 打印出我的程序返回给我的返回值时,它正是我的断言语句应该接受的确切值。我不确定发生了什么。我将函数复制粘贴到另一个文件中,然后复制粘贴我的断言语句,这次不同的断言案例起作用(一些不起作用的案例现在起作用,而一些起作用的案例现在不起作用)。 当我通过调试器工作时,似乎断言语句导致了某个逻辑语句
有时不工作,当逻辑应该。我不明白为什么...有人可以向我解释一下吗?
最佳答案
问题是你在 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
}
关于c++ - 断言语句无法正常运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48839952/