gpt4 book ai didi

c - 在 C 中将断言与数组一起使用

转载 作者:行者123 更新时间:2023-11-30 17:08:53 25 4
gpt4 key购买 nike

我正在编写的程序的一部分涉及创建一个函数来测试断言。这个函数正在测试我的 Shift3DPoint 函数,该函数采用第一个数组并通过添加第二个数组的内容来修改它(例如,test14 和 test15(如下所示)将生成新的 test14 {6,8,0} 。但是,我对如何在函数中表达这一点感到困惑,因为它应该返回一个数组,而我之前只使用过 double 进行断言。任何帮助将不胜感激!

void UnitTest3D(void); //function for assertions
void Shift3DPoint (double pt[], double offset[]);

void UnitTest3D(void){
double test13[3] = {0,0,0};
double test14[3] = {6,0,0};
double test15[3] = {0,8,0};
assert(UnitTest3D(test13, test14) ???
return;
}

void Shift3DPoint(double pt[], double offset[]) {
int i = 0;
for (i = 0; i < 3; ++i) {
pt[i] = pt[i] + offset[i]; //changes array contents by adding corresponding ptB
}

return;
}

最佳答案

assert 只是您可能会或可能不会使用的辅助函数。如果您想显式使用 assert (可能是因为如果失败,它会中止您的程序),您可以编写测试本身,然后使用断言对其进行测试。在您的情况下,test14 将具有预期值。乍一看,我会如何对待这件事:

void UnitTest3D(void){
double test14[3] = {6,0,0};
double test15[3] = {0,8,0};
double expected_result[3] = {6,8,0};

// Test the result after calling the function
Shift3DPoint(test14, test15);
for (int i = 0; i < 3; ++i)
assert(test14[i] == expected_result[i]);

return;
}

(请注意,您使用不同的数组进行调用,但我认为您明白了)。您可以编写辅助宏或更通用的函数,但您已经明白了。

此外,请考虑到 double 值很少用 == 检查,因为会出现精度问题,因此您应该给出某种 epsilon,以获得您想要的精度希望您的计算被保存:

assert ( fabs(test14[i] - expected_result[i]) < epsilon);

关于c - 在 C 中将断言与数组一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33484389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com