将运算符作为参数传递给C99
发布时间:2020-12-16 10:02:03 所属栏目:百科 来源:网络整理
导读:我想在C99中传递一个运算符作为参数. 我的解决方案是: int add(int l,int r){ return l + r;}int sub(int l,int r){ return l - r;}// ... long list of operator functionsint perform(int (*f)(int,int),int left,int right){ return f(left,right);}int
我想在C99中传递一个运算符作为参数.
我的解决方案是: int add(int l,int r) { return l + r; } int sub(int l,int r) { return l - r; } // ... long list of operator functions int perform(int (*f)(int,int),int left,int right) { return f(left,right); } int main(void) { int a = perform(&add,3,2); } 还有其他方法吗?我不想为每个运算符编写一个函数. 它可能看起来像这样: int a = perform(something_cool_here,2); 解决方法
你可以使用switch / case,例如:
int perform(char op,int a,int b) { switch (op) { case '+': return a+b; case '-': return a-b; default: return 0; } } 但是你仍然需要为每个运算符编写一些代码;你没有在C中免费获得任何东西. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |