C语言_带参宏和函数的区别及各自优缺点

2023-11-02


前言

C语言中,要想解决某子问题,可以自定义一个函数来专门处理该问题,比如:我想比较两个数的大小,那么我可以地定义一个函数max来完成两个数求最大值功能。但是,C语言中我们也可以通过宏定义来定义一个求最值的函数MAX,然后通过使用带参宏来完成最大值的求解。那么问题来了,两种方式都可以定义一个求最值的函数,那他们有什么区别了?两者有啥优缺点呢?本文则针对以上问题进行说明和总结。


一、 带参宏 和 函数 概念引入?

#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))//宏定义最大值函数

int max(int x,int y)//自定义求最值函数
{
	return x>y?x:y;
}


int main()
{
	printf("宏定义中两数最大值为:%d\n",MAX(8,99));
	printf("自定义函数中两数最大值为:%d\n",max(55,3));
	
	return 0;
}

代码运行结果展示:
两个方法都可以达到求最值的目的,那么两者有何区别?有何优缺点?

在这里插入图片描述


二、带宏参 和 函数 的区别和优缺点:

在这里插入图片描述
|–| const修饰符| |
|–|–|
| | |

const修饰符 符号常量
执行阶段 编译、运行时起作用 预处理阶段
作用方式 ①有对应的数据类型;②将变量转为常量时,会做语法检查,如果存在越界问题或超界情况,会给出警告 简单的字符替换

|是否能调试||
|初始化||

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言_带参宏和函数的区别及各自优缺点 的相关文章

  • 电商数据api拼多多接口获取商品实时数据价格比价api代码演示案例

    拼多多商品详情接口 接口接入入口 它的主要功能是允许卖家从自己的系统中快速获取商品详细信息 通过这个接口 卖家可以提取到商品的各类数据 包括但不限于商品标题 价格 优惠价 收藏数 下单人数 月销售量等 此外 还可以获取到商品的SKU图 详情
  • 用CHAT分析高校体育智慧教学体系构建与探索研究现状

    CHAT回复 现阶段 高校体育智慧教学体系的构建与探索研究还处于初级阶段 但全球数字化转型大潮的推动下 一些较为前沿的研究和实践已经开始出现 1 教学平台的建设 很多高校已经开始尝试使用在线教育平台进行体育教学 把传统的面对面授课模式转变为
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】电影播放平台

    电影播放平台采用B S架构 数据库是MySQL 网站的搭建与开发采用了先进的java进行编写 使用了springboot框架 该系统从两个对象 由管理员和用户来对系统进行设计构建 主要功能包括 个人信息修改 对用户 电影分类 电影信息等功能
  • 华为OD机试真题-分披萨-2023年OD统一考试(C卷)

    题目描述 吃货 和 馋嘴 两人到披萨店点了一份铁盘 圆形 披萨 并嘱咐店员将披萨按放射状切成大小相同的偶数扇形小块 但是粗心服务员将披萨切成了每块大小都完全不同奇数块 且肉眼能分辨出大小 由于两人都想吃到最多的披萨 他们商量了一个他们认为公
  • 华为OD统一考试 Python【数字转化】

    描述 我们想要一种特殊的整数编码方式 让数字小的时候 编码占的空间也小 编码的方法如下 我们每7位组成一部分来编码 在每个字节里 用前7位来存数字 如果后面还有数据 最高的那一位就是1 否则就是0 数据要按小端序保存 也就是说 小的数据部分
  • 华为OD机试2024年最新题库(Java)

    我是一名软件开发培训机构老师 我的学生已经有上百人通过了华为OD机试 学生们每次考完试 会把题目拿出来一起交流分享 重要 2024年1月 5月 考的都是OD统一考试 C卷 题库已经整理好了 命中率95 以上 这个专栏使用 Java 解法 问
  • 独家 | 鸿蒙(HarmonyOS)开发详细学习笔记免费分享

    前言 华为宣布 将在1月18日 在北京 上海 杭州 南京 成都 厦门 武汉 长沙 8 大城市同时召开大会 届时将揭秘鸿蒙生态和 HarmonyOS NEXT 进阶新篇章 简单的来说就是 纯血鸿蒙系统 即将彻底揭晓 鸿蒙系统自推出来以来 就一
  • Hutool改变我们的coding方式(二)

    Hutool改变我们的coding方式 Hutool 简介 Hutool如何改变我们的coding方式 文档 安装 Maven
  • 计算机Java项目|基于SSM的微课学习系统

    作者主页 编程指南针 作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智
  • 计算机Java项目|电影购票系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 春眠不觉晓,Java数据类型知多少?基础牢不牢看完本文就有数了

    俺滴座右铭是不在沉默中爆发 就在沉默中灭亡 一起加油学习 珍惜现在来之不易的学习时光吧 等工作之后 你就会发现 想学习真的需要挤时间 厚积薄发啦 我们知道Java是面向对象的静态型编程语言 在Java的世界里万物皆对象 但我认为是万物皆数据
  • 最新整理Java面试八股文,大厂必备神器

    在此 我采访了数十名大厂的面试官和上百的的面试者 总结出了这一套Java面试八股文 这套八股文已经帮助了上百人拿到自己心仪的offer 我们先来看看这套八股文 Java基础面试八股文 操作系统中 heap 和 stack 的区别 什么是基于
  • 详解Java信号量-Semaphore

    第1章 引言 大家好 我是小黑 今天 咱们一起来深入探讨一下Semaphore 在Java中 正确地管理并发是一件既挑战又有趣的事情 当谈到并发控制 大家可能首先想到的是synchronized关键字或者是ReentrantLock 但其实
  • 详解toLowerCase(判断字符串相等)

    一 toLowerCase 函数简介 toLowerCase 是一个在多个编程语言中都存在的字符串方法 它的作用是将字符串中的所有大写字母转换为对应的小写字母 常用于文本处理 搜索和比较等情况 以确保字符串的一致性和非大小写敏感的操作 二
  • 【心电图基线估计和去噪方法的群稀疏正则化】带有群稀疏正则化的心电图基线估计和去噪(Matlab实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 【路径规划】基于改进遗传算法求解机器人栅格地图路径规划(Matlab实现实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 【Linux】文件周边001之系统文件IO

    樊梓慕 个人主页 个人专栏 C语言 数据结构 蓝桥杯试题 LeetCode刷题笔记 实训项目
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • Java开发中不要使用受检异常

    简介 Java是唯一 主流 实现了受检异常概念的编程语言 一开始 受检异常就是争议的焦点 在当时被视为一种创新概念 Java于1996年推出 如今却被视不良实践 本文要讨论Java中非受检异常和受检异常的动机以及它们优缺点 与大多数关注这个

随机推荐

  • 最近很火的微信啪一啪猜猜是怎样通过Flutter实现的?

    作者 CrazyQ1 链接 https juejin im post 5eeb49a1e51d4573c91b91ab 最近这个啪一啪效果挺火的啊 群里经常有人啪 介绍 其实之前我就双击过头像 但并没任何效果 估计是当时把这个啪一啪消息隐藏
  • QThread的信号与槽用法详解

    QThread的信号与槽用法主要涉及以下几个方面 QThread的finished 信号 当QThread执行完毕时 会发出finished 信号 我们可以通过连接该信号到槽函数的方式 实现在QThread执行完毕后进行一些操作 例如 cl
  • 公司组网网络解决方案和企业常用的组网技术有哪些?

    随着企业信息化的发展 依赖互联网 云服务等协作办公的需求越来越多 组建一个高效适用的企业网络 对于提高企业办公效率 促进企业发展显得至关重要 企业组网的方式主要有 MPLS专线 VPN以及SD WAN等 至于哪一种才是好的解决方案 网宿君认
  • vue el-dialog嵌入video实现视频播放功能

    video嵌入dialog实现视频播放 业务需求 1 实现的效果图 3 全部代码 复制粘贴即可实现 业务需求 弹窗实现视频播放 并且切换不同选项卡播放不同视频 1 实现的效果图 3 全部代码 复制粘贴即可实现
  • springboot内置序列化工具Jackson

    JackSon介绍 本文使用的JackSon版本为2 9 6 JackSon是解析JSON和XML的一个框架 优点是简单易用 性能较高 JackSon处理JSON的方式 JackSon提供了三种JSON的处理方式 分别是数据绑定 树模型 流
  • J-Link识别到驱动但是识别不到芯片CODE和上电亮红灯的原因和解决方法

    今天在来分享一下自己在使用J Link时候遇到的一个问题以及我自己的解决方法 今天在用J Link烧录时候突然发现J link连接到开发板时候会先闪几下红灯 然后J link驱动是可以找到的 但是通过Keil查看J link是否识别到要烧录
  • Linux 中的 chage 命令及示例

    chage命令用于查看和更改用户密码过期信息 当要为用户提供有限时间的登录或需要不时更改登录密码时 使用此命令 借助该命令 我们可以查看账户的时效信息 上次更改密码的日期 设置密码更改时间 一定时间后锁定账户等 chage 命令的语法如下
  • 网络层拥塞控制与传输层TCP拥塞控制的区别

    近期学习计算机网络的过程中 发现网络层与传输层都有对拥塞控制的实现 为什么网络层和传输层都有拥塞控制呢 其实 网络层拥塞控制和传输层拥塞控制的目的是相同的 都是为了防止过多的数据进入网络 保证整个网络中不出现过量分组而引起网络的性能下降 那
  • 目标检测从入门到精通—概述(一)

    你有梦想 就去实现它 目录 你有梦想 就去实现它 1 计算机视觉 CV Computer Vision 领域任务是什么 图像分类 目标检测 分割是计算机视觉领域的三大任务 一是分类 Classification 二是检测 Detection
  • kubernetes环境搭建及部署

    一 kubernetes 概述 1 kubernetes 基本介绍 kubernetes 简称 K8s 是用 8 代替 8 个字符 ubernete 而成的缩写 是一个开源 的 用于管理云平台中多个主机上的容器化的应用 Kubernetes
  • 【排序算法】快速排序的分析改进

    基本的快速排序 最基本的快速排序是由C A R Hoare在1960年提出的 快速排序的算法是一种分治排序算法 它将数组划分为两个部分 然后分别对两个部分进行排序 快速每次对数组重新排序 选择一个基准值key 然后让数组满足下面的两个个条件
  • TensorFlow:实战Google深度学习框架(六)图像数据处理

    第七章 图像数据处理 7 1 TFRecord输入数据格式 TensorFlow提供了一种统一的格式来存储数据 TFRecord格式 7 1 1 TFRecord格式介绍 7 1 2 TFRecord样例程序 7 2 图像数据处理 7 2
  • linux中shell中使用expect实现自动应答

    linux中shell中使用expect实现自动应答 expect有两种方式 一种是为了单纯的进行自动应答 还有一种是为了结合shell脚本 大多数情况下都是为了结合shell脚本 这里示例两种写法 但在使用时应该尽量使用结合shell方式
  • 杀毒软件 clamav 的安装和使用

    目录 一 clamAV介绍 二 安装ClamAV clamdscan 三 手动更新数据库 四 用法 4 1 clamscan用法 4 2 clamdscan用法 五 python判定有无检测出病毒 一 clamAV介绍 ClamAV 杀毒是
  • python入门基础-数据类型&有序序列和无序序列;

    目录 python优点 python缺点 python应用场景 Python数据类型 字符串 string 列表 list 元组 tuple 不可变数据 1 2 3 set 集合 1 2 3 无序 自动去重 dict字典 key value
  • 基于YOLO的3D人脸关键点检测方案

    目录 前言 一 任务列表 二 3D人脸关键点数据 H3WB 2 下载方法 3 任务 4 评估 5 使用许可 3DFAW AFLW2000 3D 三 3D关键点的Z维度信息 1 基于3DMM模型的方法 2 H3WB 四 当前SOTA的方法 1
  • STM32串口下载

    使用FlyMCU下载程序 1 上电前 设置BOOT0 1 BOOT1 0 或者是在上电后 设置BOOT0 1 BOOT1 0之后 然后按一下复位按键 从而通过串口下载程序 2 在MDK编译加载生成的hex文件 并勾选右边的编程前重装文件 这
  • Unity进阶 - 动画系统 - Animations选项卡

    Unity进阶 动画系统 Animations选项卡 相关文章阅读 Unity 进阶 动画系统 Mecanim动画系统 Unity进阶 动画系统 给人物角色制作动画 Unity进阶 动画系统 人形动画的导入 Unity进阶 动画系统 导入设
  • 中国移动笔试有感

    被3号的中国移动笔试给深深地虐了 以前被像阿里阿这样的大企业虐就没啥子感觉 笔试完依旧是嘻嘻哈哈 像恒生这样的企业 笔试对我来说还是比较容易的虽然面试被刷了 说明还是需要多读书啊 但是中国移动的笔试 真的深深的激起了我学习的动力 我也不知道
  • C语言_带参宏和函数的区别及各自优缺点

    前言 C语言中 要想解决某子问题 可以自定义一个函数来专门处理该问题 比如 我想比较两个数的大小 那么我可以地定义一个函数max来完成两个数求最大值功能 但是 C语言中我们也可以通过宏定义来定义一个求最值的函数MAX 然后通过使用带参宏来完