博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++之宏定义实现两个数最值
阅读量:5200 次
发布时间:2019-06-13

本文共 952 字,大约阅读时间需要 3 分钟。

 

转自:

 

方法一: 利用三重条件运算符

#include 
#define MIN(A,B) ( (A) > (B) ? (B) : (A) )#define MAX(A,B) ( (A) > (B) ? (A) : (B) ) int main(void){printf("%d\n",MIN(12,334));printf("%d\n",MAX(12,334));return 0; }

 

值得关注的是
1 . 宏定义的变量在引用的时候,用 ()括起来,防止预处理器展开的错误
2 . (a > b ? action1 : action2 ) 这样的方式和 if —else 结果一样,但他会使得编译器产生更优化的代码,这在嵌入式编程中比较重要。

 

 

方法二: typeof 关键字

#include 
#define MIX(X,Y) ({\typeof(X) x_ = (X);\typeof(Y) y_ = (Y);\(x_< y_)? x_:y_;\}) #define MAX(X,Y) ({\typeof(X) x_ = (X);\typeof(Y) y_ = (Y);\(x_>y_)? x_:y_;\})int main(int argc, char const *argv[]){int num1,num2;printf("input two numbers:");scanf("%d %d",&num1,&num2);printf("mix is %d,max is %d\n",MIX(num1,num2),MAX(num1,num2));return 0;}

 

值得借鉴的是

1 . typeof 关键字 用于获得变量的数据类型 。

2 . 宏定义的实现,用 { } 作为宏整体,里面是一个代码块,语句用 ; 隔开 。

3 . 当宏的实现长度很长的时候,使用换行符 \ 换到下一行 。

4 . 使用输入数据的类型定义局部变量 x_ 和 y_ 实现对原始数据的保护。

5 . 宏实现,不能用 ; 结尾

 

其他参考:

 

转载于:https://www.cnblogs.com/Tang-tangt/p/9852885.html

你可能感兴趣的文章
[BSGS][哈希]luogu P3846 可爱的质数
查看>>
Python 第四十五章 MySQL 内容回顾
查看>>
iostat参数说明
查看>>
js 封装获取元素的第一个元素
查看>>
iOS 获取Home键指纹验证
查看>>
Python-Mac 安装 PyQt4
查看>>
P2571 [SCOI2010]传送带
查看>>
哈希表1
查看>>
用Data Url (data:image/jpg;base64,)将小图片生成数据流形式
查看>>
实验2-2
查看>>
C#初识
查看>>
Spider-Python爬虫之聚焦爬虫与通用爬虫的区别
查看>>
String,StringBuffer与StringBuilder的区别?? .
查看>>
JavaScript(三) 数据类型
查看>>
移动端rem布局屏幕适配插件(放js中便可使用)
查看>>
Docker
查看>>
bzoj2259 [Oibh]新型计算机
查看>>
对位与字节的深度认识
查看>>
C++编程基础二 16-习题4
查看>>
org.hibernate.HibernateException: No Session found for current thread
查看>>