首页 > 其他分享 >switch&回调函数

switch&回调函数

时间:2024-08-28 19:37:56浏览次数:3  
标签:calc return 函数 res float callback switch printf 回调

#include <stdio.h>

// 函数原型声明
float calc(float a, float y, const char op);
float add(float a, float b);
float minus(float a, float b);
float multiple(float a, float b);
float divide(float a, float b);
float calc_using_callback(float a, float b, float (*op_callback)(float, float));

// 实现基本的数学运算
float calc(float a, float y, const char op)
{
    float res;

    switch (op)
    {
        case '+':
            res = a + y;
            break;

        case '-':
            res = a - y;
            break;

        case '*':
            res = a * y;
            break;

        case '/':
            if (y != 0)
                res = a / y;
            else
            {
                printf("Error: Division by zero.\n");
                res = 0; // 返回默认值
            }
            break;

        default:
            printf("Invalid operator '%c'.\n", op);
            res = 0; // 返回默认值
            break;
    }

    return res;
}

// 加法
float add(float a, float b)
{
    return (a + b);
}

// 减法
float minus(float a, float b)
{
    return (a - b);
}

// 乘法
float multiple(float a, float b)
{
    return (a * b);
}

// 除法
float divide(float a, float b)
{
    if (b != 0)
        return (a / b);
    else
    {
        printf("Error: Division by zero.\n");
        return 0; // 返回默认值
    }
}

// 使用回调函数进行数学运算
float calc_using_callback(float a, float b, float (*op_callback)(float, float))
{
    return (op_callback(a, b));
}

int main(void)
{
    float res;

    // 使用 calc 函数
    res = calc(1.6, 2, '-');
    printf("res = %.2f\n", res);

    // 使用 calc_using_callback 函数
    res = calc_using_callback(1.5, 2, add);
    printf("res = %.2f\n", res);

    res = calc_using_callback(1.5, 2, minus);
    printf("res = %.2f\n", res);

    res = calc_using_callback(1.5, 2, multiple);
    printf("res = %.2f\n", res);

    res = calc_using_callback(1.5, 2, divide);
    printf("res = %.2f\n", res);

    return 0;
}

标签:calc,return,函数,res,float,callback,switch,printf,回调
From: https://www.cnblogs.com/archerqvq/p/18385423

相关文章

  • YOLOv9改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题
    一、本文介绍本文记录的是改进YOLOv9的损失函数,将其替换成SlideLoss,并详细说明了优化原因,注意事项等。SlideLoss函数可以有效地解决样本不平衡问题,为困难样本赋予更高的权重,使模型在训练过程中更加关注困难样本。若是在自己的数据集中发现容易样本的数量非常大,而困难样本......
  • 28:函数闭包与装饰器
    l=[1,3]l.__iter__()#迭代器#装饰器:本质就是函数,功能是为其他函数添加附加功能#原则:#1.不修改被修饰函数的源代码#2.不修改被修饰函数的调用方式#装饰器的知识储备#装饰器=高阶函数+函数嵌套+闭包#adefcal(l):res=0foriinl:res+=ireturnr......
  • Python函数
    本篇是Python系列教程第9篇,更多内容敬请访问我的Python合集1定义函数在Python中,你可以使用def关键字来定义一个函数。函数定义的基本语法如下:deffunction_name(parameters):#函数体#...returnvaluefunction_name:函数的名称。parameters:......
  • mmcv2.0中build loop、loop.run()、从Dataloader中取数据、run_iter()函数
    本篇博客中,我们以推理为例。首先进入Runer类中的test函数:然后进入Runer类中的build_test_loop函数:然后经过Registry中的build_from_cfg等函数,进入TestLoop类的__init__进行初始化。初始化的时候,会进入父类BaseLoop,在BaseLoop中,会对Dataloader进行build,关于mmcv2.0是如何构建D......
  • 【Linux网络编程】Socket Api函数
    【Linux网络编程】SocketApi函数TCP/IP协议族TCP/IP协议族有sockaddr_in和sockaddr_in6两个专用的socket地址结构体,它们分别用于IPv4和IPv6,在此只将IPv4,如下为structsockaddr_in:structsockaddr_in{sa_family_tsin_family;//地址族:AF_INETu_int......
  • Python内置的getclassname()函数
    Python是一种广泛使用的编程语言,其在面向对象编程方面具有显著优势。为了更好地理解和应用这一领域的基础知识,熟悉Python编程中类的相关操作是非常重要的。本文主要介绍如何使用Python内置的getclassname()函数获取类的名称,并通过实际代码示例来演示该函数的使用。首先,我们需要了......
  • 2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount
    2024-08-28:用go语言,给定一个从1开始、长度为n的整数数组nums,定义一个函数greaterCount(arr,val)可以返回数组arr中大于val的元素数量。按照以下规则进行n次操作,将nums中的元素分配到两个数组arr1和arr2中:1.第一次操作将nums[1]加入arr1。2.第二次操作将nums[2]加入arr2。3.对......
  • c语言中的管道函数
    在C语言中,管道是一种用于进程间通信的机制,它允许一个进程与另一个进程之间传递数据。以下是与管道相关的主要函数及其用法,包括pipe、popen、pclose和dup2函数。1.pipe函数pipe函数用于创建一个无名管道。无名管道是单向的,可以在父子进程之间传递数据。函数原型in......
  • urb中几个函数的使用
    usb_buffer_alloc(free)说是为了更好的从名字看出这个函数真实做的事情:DMAcoherencylinux提供两种方式,来保证使用dma时,内存和硬件cache的一致性:usb_buffer_alloc()isrenamedtousb_alloc_coherent()  usb_buffer_free()  isrenamedtousb_free_coherent()usb_alloc(......
  • Hive用户定义函数 [单列函数UDF | 聚合函数UDAF]
    Hive中函数有4类:单行函数、聚合函数、炸裂函数、窗口函数用户定义函数(UDF:User-DefinedFunctions)按输入行数与输出行数的对应关系:UDF:普通函数,一进一出UDAF:聚合函数,多进一出UDTF:表生成函数,一进多出,如输入一行array类型,返回3行string类型一、单列函数(UDF-一进一出)1、字符串......