我希望将大于(>)和小于(<)操作符作为参数传递给函数,这有可能吗?是否有任何方法可以将这些运算符作为参数传递?请问是否有人可以帮助我。
>
或<
进行比较,参见sort文档中的示例。>
或<
这样的廉价操作,函数调用开销超过了比较工作)。为了使其有效率,需要:没有办法传递一个“原始操作符”,但有办法实现相同的结果。最简单的方法是使用char
。
int func(char op, int a, int b)
{
if (op == '<')
{
return a < b;
}
else if (op == '>')
{
return a > b;
}
return -l; /* error */
}
更复杂的解决方案是使用指向执行操作的函数的函数指针(类似于sort方法使用的比较器)。
#include <stdio.h>
int max(int a, int b, int (*comp)(int, int)) {
if (comp(a, b) < 0) {
return b;
} else {
return a;
}
}
int mycomp(int a, int b) {
return a < b ? -1 : 1;
}
int main() {
printf("%d %d\n", max(1, 2, mycomp), max(2, 1, mycomp));
}
#define
和#
编写此函数。字符#
将运算符更改为字符串。(例如在#define
中,#+
= "+"
)。#include <stdio.h>
#define great(c) ((#c==">")? (1):(0))
int main()
{
printf ("%d", great(>));
return 0;
}
>
作为函数参数传递。