C语言宏定义取得两数的最大值和最小值
/*本程序时为了验证用宏来做
* 两个数的大小比较的写法*/
#include<stdio.h>
#define MAX(x,y) ((x)<(y)?(y):(x))
#define MIN(X,Y) ({\
typeof (X) x_ = (X);\
typeof (Y) y_ = (Y);\
(x_ < y_) ? x_ : y_; })
/*({...})的作用是将内部的几条语句中最后一条的值返回,它也允许在内部声明变量(因为它通过大括号组成了一个局部Scope)*/
int foo(int *flag);
int foo(int *flag)
{
*flag = *flag + 3;
return *flag;
}
int main()
{
int a=3,b=5,c;
c = MAX(b,foo(&a));
printf("a,b,c=%d,%d,%d\n",a,b,c);
/*此时a=9,b=5,c=9,调用MIN看是否a的值再加2次*/
c = MIN(b,foo(&a));
printf("a,b,c=%d,%d,%d\n",a,b,c);
return 0;
}
/*运行结果:
* [root@bogon c_study]# ./hong_max_min
* a,b,c=9,5,9
* a,b,c=12,5,5
*证明MIN的写法才是正确的*/
参考链接:http://blog.csdn.net/jk110333/article/details/8021231
转载于:https://www.cnblogs.com/followyourdream/p/3368504.html
C语言宏定义取得两数的最大值和最小值相关推荐
- c语言求n个数的最小值博客,C语言中的#define宏定义 求一组数的最大值和最小值(转)...
C语言有很多预编译关键字,如#if.#include.#else--,所有以#开头的的关键字都属于这一类,此处讨论#define关键字 #define的核心就是"替换" 如#def ...
- c语言 宏do while,关于C语言宏定义 使用do{ xxxx }while()
暂时感觉像是由于":"的原因,关于使用习惯方面的问题!! 下面是copy的: 这样的宏见过么: Cpp代码 #define FOO(x) do {\ some_code_line_ ...
- C语言宏定义、宏函数、内置宏与常用宏
前言: 在C语言中,变量类型.循环控制.基础语法等与其他高级语言基本无异:而C语言(C++)特有的两把双刃剑指针和宏定义/宏函数使得C语言在底层开发中披荆斩棘.无所不能.这两个概念涉及范围比较广,其分 ...
- c语言中#39;xd#39;代表什么,关于C语言宏定义的技巧:#39;##39;和#39;###39;
关于C语言宏定义的技巧:'#'和'##' '#'和'##' '#'和'##'是两个预处理运算符,只能在预处理的过程中使用.在带参数的宏定义中, '#'运算符后面应该跟一个参数,预处理器会把这个参数转换 ...
- C/C++语言宏定义##连接符和符#的使用
C/C++语言宏定义##连接符和符#的使用 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/53113187 (一) ...
- c语言宏定义技巧和用法,关于C语言宏定义的技巧:'#'和'##'
关于C语言宏定义的技巧:'#'和'##' '#'和'##' '#'和'##'是两个预处理运算符,只能在预处理的过程中使用.在带参数的宏定义中, '#'运算符后面应该跟一个参数,预处理器会把这个参数转换 ...
- c语言宏定义(c语言宏定义是什么意思)
C语言宏定义名可以有括号和分号吗? 宏定义的名称,是C语言标识符的一种,和函数名,变量名的命名规则是一样的,只允许使用数字,字母,下划线,且不能以数字开头. 所以宏名是不可以有括号和分号的. 另外,在 ...
- 宏定义 指针 c语言,C语言宏定义讲解(C和指针 笔记)
关于C语言宏定义#define 最常用的莫过于通过宏定义定义常数了,例如 #define MAX 1000 通过宏定义程序中需要的常量,方便维护被多次引用的变量,并且宏替换在预处理阶段完成, ...
- c语言宏定义的连接符##和#转字符串
c语言宏定义的连接符有哪些 [此问题的推荐答案] (一)宏定义中的## 连接符与# 符 ## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串. ...
最新文章
- p40 升级鸿蒙,等了这么久,我的P40终于可以升级鸿蒙系统了
- 2019年前端的3个趋势
- PyTorch多卡分布式训练:DistributedDataParallel (DDP) 简要分析
- struts2,jsp,freemarker编程小技巧
- XmlAttribute与实体的转换和匹配方案(附源码)
- python 利用栈实现复杂计算器
- tftp命令linux,tftp命令使用详解
- 威富通对账单下载并且解析为对象列表展示
- 爬虫---数据的提取
- 1068 万绿丛中一点红(JAVA)
- 我乐网关停1月套牢2亿风投
- 新南威语言班C加,【干货来了】新南威尔士大学UEEC语言班 你了解多少?
- 核心交换机链路聚合、冗余、堆叠、热备份
- gRPC快速入门(三)——Protobuf应用示例
- sql盲注 各种方法拿到 管理员账户和密码
- WIN10 共享 访问WIN7提示 出现“你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问
- HTML5期末大作业:海绵宝宝相关人物介绍
- 孕妇不能吃哪些食物?(协和妇产权威版)
- java集成微信发送模板消息
- 【TJOI2017】可乐