我有一些代码应该做一件简单的事情:
如果参数的值为-1,那么我应该更改该值。否则 - 什么都不做
我有一个包含 20 个参数的列表,但我想知道是否有任何方法可以不做检查:
如果 param1 == -1 则 ... 否则 ...
如果 param2 == -1 那么.... 否则...
有人知道我能做些什么来提高效率吗?谢谢!
我有一些代码应该做一件简单的事情:
如果参数的值为-1,那么我应该更改该值。否则 - 什么都不做
我有一个包含 20 个参数的列表,但我想知道是否有任何方法可以不做检查:
如果 param1 == -1 则 ... 否则 ...
如果 param2 == -1 那么.... 否则...
有人知道我能做些什么来提高效率吗?谢谢!
如果参数都是变量(不是数组什么的),你可以做一个函数并写
change_or_let_it_be( ¶m1, value );
change_or_let_it_be( ¶m2, value );
change_or_let_it_be( ¶m3, value );
你只有一个 if (in function) 和很多电话。最好将其存储在某个结构(数组、列表等)中,并避免调用此函数 20 次。
不知道我是否理解你想要的,但是这个怎么样?
void func(int params[20]) {
for (int i = 0; i < 20; ++i) {
if (params[i] == -1)
params[i] = NEW_VALUE;
}
}
使用 for 检查每个值,因此您不需要硬编码所有不同的值,然后在参数为 -1 时更改参数。另请注意,我假设“高效”是指代码编写时间效率更高!
老实说,一系列 if/then 语句是最有效的,如果不是最漂亮的解决方案的话!将测试嵌入循环并将参数存储为数组需要以下额外计算:
- testing that the loop counter does not exceed the maximum
- incrementing the loop counter
- using pointer arithmetic to access each parameter
当然,如果您必须多次执行这 20 次测试,这些速度因素只是一个因素。但事实上你已经尽可能高效地编写了它:)
另一个更清洁的解决方案:
int *p[] = {¶m1, ¶m2, ¶m3, NULL};
int i = 0;
for(;p[i] != NULL; i++) {
if(*p[i] == -1) *p[i] = SOME_VALUE;
}