加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

将运算符作为参数传递给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中免费获得任何东西.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读