断言语句无法正常运行



我很难理解断言语句的性质

我以为我的程序无法正常工作,但是当我将主要打印归还给我的返回值时,这是我的断言声明应该接受的确切值。我不确定发生了什么。我将功能复制到另一个文件中,然后复制我的断言语句,这次是不同的断言案例工作(某些案例不起作用,现在起作用,还有一些有效的情况,现在不行(。当我通过调试器工作时,似乎断言语句正在引起某个逻辑语句

有时不起作用的逻辑应该不起作用。我不明白为什么...有人可以向我解释一下吗?

问题是您修改了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
}

最新更新