java宏定义三目运算define_宏定义的正确写法,三目运算的宏定义

2023-11-16

// 第一阶段

/*

对象宏

*/

#define M_PI 3.14159265358979323846264338327950288

/*

函数宏

*/

#define PLUS(x,y) x + y

// 正确的认识宏 (三目运算的宏定义)

// (1)小白写法

#define MIN(A,B) A < B ? A : B

int a = MIN(1,2);

// => int a = 1 < 2 ? 1 : 2;

printf("%d",a);

// => 1

// 问题

int a = 2 * MIN(3, 4);

// => int a = 2 * 3 < 4 ? 3 : 4;

// => int a = 6 < 4 ? 3 : 4;

// => int a = 4;

//(2)码农写法

#define MIN(A,B) (A < B ? A : B)

//完美解决

int a = 2 * MIN(3, 4);

// 问题

int a = MIN(3, 4 < 5 ? 4 : 5);

// => int a = (3 < 4 < 5 ? 4 : 5 ? 3 : 4 < 5 ? 4 : 5); //希望你还记得运算符优先级

// => int a = ((3 < (4 < 5 ? 4 : 5) ? 3 : 4) < 5 ? 4 : 5); //为了您不太纠结,我给这个式子加上了括号

// => int a = ((3 < 4 ? 3 : 4) < 5 ? 4 : 5)

// => int a = (3 < 5 ? 4 : 5)

// => int a = 4

// (3)工程师写法

#define MIN(A,B) ((A) < (B) ? (A) : (B))

// 完美解决

int a = MIN(3, 4 < 5 ? 4 : 5);

// 问题

float a = 1.0f;

float b = MIN(a++, 1.5f);

// => float b = ((a++) < (1.5f) ? (a++) : (1.5f))

// (4)大牛写法

#define MIN(A,B)({ __typeof__(A) __a = (A); __typeof__(B) __b = (B); __a < __b ? __a : __b; })

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

java宏定义三目运算define_宏定义的正确写法,三目运算的宏定义 的相关文章

  • 关于CSS及JS的使用技巧浅谈

    使用CSS预处理器 例如Sass和Less 可以帮助开发者更快速 更有效地编写CSS代码 模块化 将CSS和JS代码分解为模块 可以帮助开发者更好地组织和管理代码 压缩和合并 使用压缩工具可以帮助减少CSS和JS文件的大小 使网站更容易加载
  • minikube单机安装nfs服务

    1 安装 nfs server sudo apt get update sudo apt get install y nfs kernel server 2 创建目录 配置 IP 共享目录绑定 vim etc exports 新增 data
  • Shiro权限框架-实现分布式会话SessionManager(7)

    1 会话的问题 2 分布式会话实现思路 1 原理分析 所有服务器的session信息都存储到了同一个Redis集群中 即所有的服务都将 Session 的信息存储到 Redis 集群中 无论是对 Session 的注销 更新都会同步到集群中
  • vue+elementUI图片预览,<el-image> 的使用

    vue elementUI图片预览 el image 的使用 本文转载自 https www cnblogs com allanlau p 13397625 html 首页定义data data return imgs imgsVisibl
  • 手把手教你使用transciver-ip核的配置

    目前很多行业都会用到transceiver 甚至像pcie srio等高速接口都调用了transceiver 所以了解并学会其使用方法还是很重要的 本文结合作者的使用经验 让你快速的了解并上手使用 Xilinx提供了Transceivers
  • (Scikit-Learn)朴素贝叶斯使用方法:高斯朴素贝叶斯 多项式朴素贝叶斯(文本分类)

    在贝叶斯分类中 我们希望确定一个具有某些特征的样本属于某类标签的概率 通常记为 P L 特征 贝叶斯定理告诉我们 可以直接用下面的公式计算这个概率 假如需要确定两种标签 定义为 L1 和 L2 一种方法就是计算这两个标签的后验概率的比值 其
  • Python自学之路第九步——用户输入和while循环

    主要用到的是input 函数 他可以接受用户的输入 这样便可以编写交互式的程序了 还介绍了while循环 这个和C中一样 包括if判断都可以尝试测试一下 很有意思 函数input pr 我们将统计您的基本信息 pr n请输入您的名字 nam
  • Mybatis - NoSuchMethodError: net.sf.jsqlparser.statement.select.SetOperationList.getSelects()Ljava/

    昨天在修改一个接口功能时 需要在原来的接口上提供分页和模糊查询 就使用了分页 PageHelper来做 但是在mybatis的xml文件中又使用了UNION来合并查询结果 导致项目启动直接报错 Handler processing fail
  • MySQL 中读写分离可能遇到的问题

    前言 MySQL 中读写分离是经常用到了的架构了 通过读写分离实现横向扩展的能力 写入和更新操作在源服务器上进行 从服务器中进行数据的读取操作 通过增大从服务器的个数 能够极大的增强数据库的读取能力 MySQL 中的高可用架构越已经呈现出越
  • ubuntu 光盘读取

    把光盘放入光驱后 要挂载光驱 将光驱设备挂在到 mnt 下 sudo mount dev sr0 mnt mount dev sr0 is write protected mounting read only 到 mnt目录下就可以看到光盘
  • 一条SQL语句求前面记录的平均值

    有算法要求如下 For i 1 i lt 10 i ta i t 1 t 2 t i i 用一条SQL语句实现它 分别用表变量 ta 和 t 来对应 ta 和 t declare t table id int d decimal 18 4
  • 第一课 认识Python

    相比大家都听说过Python是一门容易学习的语言 那么实际是怎么样呢 我们从以下几点看看 1 首先 Python是最容易学习和最好用的语言 Python容易阅读和编写 比较清晰 格式非常简洁 表达能力强 这样同样写一个程序 Python比其
  • uniApp条件编译以及跳转方法

    1 使用Uniapp的方法获取系统环境 仅在JS中可以使用 uni getSystemInfoSync platform 获取应用所在的平台 if uni getSystemInfoSync platform ios if uni getS
  • pickle与.pkl文件

    经常遇到在Python程序运行中得到了一些字符串 列表 字典等数据 想要保存下来 长长久久的 方便以后使用 这个时候Pickle模块就派上用场了 pickle 模块及其同类模块 cPickle 向 Python 提供了 pickle 支持
  • mipi介绍

    文章目录 1 MIPI简介 1 1 DSI layer 2 D PHY 2 1 D PHY介绍 2 2 电平状态 2 3 lane结构 2 4 data lane操作模式 2 4 1 escape mode和space one hot co
  • kylin启动netstat: n: unknown or uninstrumented protocol

    检查hadoop配置的时候出现问题 报错如下 lcc lcc apache kylin 2 6 0 hbase1x bin check env sh Retrieving hadoop conf dir KYLIN HOME is set
  • 史上最快的实例分割SparseInst Int8量化实录

    近期 YOLOv7里面借鉴 复 制 粘 贴 了一个新的模型 SparseInst 我借助YOLOv7的基建能力 将其导出到了ONNX 获得了一个非常不错的可以直接用OnnxRuntime 或者TensorRT跑的实例分割 后续也可能把lin
  • 数据挖掘十大算法

    参考 ICDM 数据挖掘十大算法
  • flutter 去除超出警报

    给超出内容套上SingleChildScrollView组件即可 SingleChildScrollView child

随机推荐

  • wpf datagrid自动生成列时特殊字符转换

    DataGrid控件可以根据DataTable自动生成行和列 但是如果列名包括一些特殊字符 的时候 会出现无法显示出数据或者显示DataRowView的情况 原因是这些字符是Xaml里用来标识绑定path和xpath的符号 例如我们会这么用
  • C语言补漏:字符串指针与字符数组传参

    字符串指针与字符数组传参 深信服的笔试上被吊打 其中对一道用指针做形参的题目印象十分深刻 借此恶补了一晚上指针 今天总结 以作警示 试想有如下情形 将一个字符串指针做形参赋值函数修改其字符串 函数结束后字符串被改变了吗 include
  • 快速上手Gobject

    转自 http blog csdn net acs713 article details 7778051 What is G object 很多人被灌输了这样一种概念 要写面向对象程序 那么就需要学习一种面向对象编程语言 例如C Java
  • chrome扩展开发调试

    chrome扩展由content scripts browser actions background等多个部分组成 其中 content scripts属于注入web页面 所以在contentscripts中的console log会被正
  • Uncaught TypeError: AMap.MarkerClusterer is not a constructor

    实验点聚合时报错 cluster new AMap MarkerClusterer map markers styles sts gridSize 80 改为 map plugin AMap MarkerClusterer function
  • SQL语法基础

    SQL语法基础 SQL语法基础 SQL 是用于访问和处理数据库的标准的计算机语言 SQL 语句 需要在数据库上执行的大部分工作都由 SQL 语句完成 tips SQL 对大小写不敏感 SELECT 与 select 是相同的 一些最重要的
  • 【每周一个编程技巧 - Java笔记】玩转SSM:SpringBoot+Mybatis多条件筛选

    SpringBoot Mybatis多条件筛选 在实际的业务开发系统中 做的最多的工作就是增 删 改 查操作 而这部分增 删 改 查的操作中又有80 的都是查询操作 本文记录的主要内容是 基于SpringBoot和Mybatis来实现条件查
  • tesseract-orc编译及使用(WINDOWS VS 2019)

    1 准备资源 Vs2010或者更高版本 本教程使用vs2019 1 1Tesseract源码 分支切换到3 04 看到vs2010 git地址https github com tesseract ocr tesseract下载源码 文件夹并
  • 关于 Demo_Ocean 例子的分析

    关于 Demo Ocean 例子的分析 重要总结 1 该例主要类不再继承自ExampleApplication和ExampleFrameListener 重写驱动类和监听类 2 如何创建OIS的输入系统 1 创建OIS ParamList
  • Arduino与人体感应模块

    工具 1 Arduino 开发板 1 2 人体感应模块传感器 1 这个人体感应传感器有三个引脚 分别是VCC OUT GND 同之前的红外线传感器一样输出的是数字信号 所以要将OUT接入digital pwm引脚 这里我接入3号引脚 下面是
  • sql排序,数据库字段设置为varchar导致排序失效

    一般情况下 我们在表设置排序字段都是int 对应的sql查询 也就只需要order by xx desc 但是总有一些老项目 由于会因为各种原因 导致出现此字段为varchar情况 这种情况我们应该怎么排序呢 ex g Ex state 0
  • 1、shell 基础进阶系列文章

    shell 基础进阶系列文章 目录 第一章 shell本质 第二章 shell2 第三章 shell3 第一章 shell认知 shell 基础进阶系列文章 前言 一 shell基础 1 shell脚本的本质 2 shell编译的基本步骤
  • zabbix监控数据转存与处理

    zabbix是一个基于WEB页面的分布式系统监控方案 能够监控各类资产并提供灵活的通知功能 同时能够运行在各种流行系统中 zabbix分为zabbix server和zabbix agent端 zabbix server可以单独远程监控服务
  • 美图全链路监控实战

    一 摘要 本文内容分为3部分 首先简单介绍了美图的业务背景和监控体系 然后是两个美图的监控实践 基于Grafana FlowCharting插件的 监控大盘 实战和基于基于GrafanaImageRender 企业微信机器人的 图文告警 实
  • JS 12——内置对象Math的方法

    1 Math 是一个内置对象 不是一个函数对象 2 Math 作为内置对象 拥有一些数学常数属性和数学函数方法 3 如果Math 用于 Number 类型 它不支持 BigInt 4 Math 的所有属性是静态的 Math方法也全部都是静态
  • 在AndroidStudio中如何查看Gradle的版本

    以Android Studio Giraffe 2022 3 1为例 File gt Project Structure gt Project Android Gradle Plugin Version Android Gradle插件版本
  • WEB程序员需要掌握的十大MySQL优化技巧

    51CTO独家特稿 WEB开发者不光要解决程序的效率问题 对数据库的快速访问和相应也是一个大问题 希望本文能对大家掌握MySQL优化技巧有所帮助 1 优化你的MySQL查询缓存 在MySQL服务器上进行查询 可以启用高速查询缓存 让数据库引
  • cookie,session,token区别

    cookie session token区别 前提 用户登陆一次以后下次不会再输入密码 核心的概念就是存储 cookie流程 浏览器发起http请求 服务器会进行cookie设置 服务器会进行cookie设置 也就是set cookie 服
  • 用Python完成毫秒级抢单,助你秒杀淘宝大单

    目录 0 引言 1 环境 2 需求分析 前期准备 3 淘宝购物流程回顾 4 秒杀的实现 5 代码梳理 6 总结 0 引言 年中购物618大狂欢又要开始了 各大电商又开始了大力度的折扣促销 如何做到更省钱的剁手呢 今天给大家提供一种思路 用P
  • java宏定义三目运算define_宏定义的正确写法,三目运算的宏定义

    第一阶段 对象宏 define M PI 3 14159265358979323846264338327950288 函数宏 define PLUS x y x y 正确的认识宏 三目运算的宏定义 1 小白写法 define MIN A B