宏定义_最大最小值

源码里面的最大最小值宏定义是这个样子

#define __max(a,b) (((a) > (b)) ? (a) : (b))
#define __min(a,b) (((a) < (b)) ? (a) : (b))

一直说宏定义要加一堆括号,才能正常的使用。虽然没有inline方便。不过,不可否认,底层用c确实很cool。

说白了就是运算符优先级的关系,自行脑补。。。

C语言运算符优先级

说明:
同一优先级的运算符,运算次序由结合方向所决定。
简单记就是:! > 算术运算符 > 关系运算符 > && > || > 赋值运算符


优先级


运算符


名称或含义


使用形式


结合方向


说明


1


[]


数组下标


数组名[常量表达式]


左到右


--


()


圆括号


(表达式)/函数名(形参表)


--


.


成员选择(对象)


对象.成员名


--


->


成员选择(指针)


对象指针->成员名


--


2


-


负号运算符


-表达式


右到左


单目运算符


~


按位取反运算符


~表达式


++


自增运算符


++变量名/变量名++


--


自减运算符


--变量名/变量名--


*


取值运算符


*指针变量


&


取地址运算符


&变量名


!


逻辑非运算符


!表达式


(类型)


强制类型转换


(数据类型)表达式


--


sizeof


长度运算符


sizeof(表达式)


--


3


/



表达式/表达式


左到右


双目运算符


*



表达式*表达式


%


余数(取模)


整型表达式%整型表达式


4


+



表达式+表达式


左到右


双目运算符


-



表达式-表达式


5


<< 


左移


变量<<表达式


左到右


双目运算符


>> 


右移


变量>>表达式


6



大于


表达式>表达式


左到右


双目运算符


>=


大于等于


表达式>=表达式



小于


表达式<表达式


<=


小于等于


表达式<=表达式


7


==


等于


表达式==表达式


左到右


双目运算符


!=


不等于


表达式!= 表达式


8


&


按位与


表达式&表达式


左到右


双目运算符


9


^


按位异或


表达式^表达式


左到右


双目运算符


10


|


按位或


表达式|表达式


左到右


双目运算符


11


&&


逻辑与


表达式&&表达式


左到右


双目运算符


12


||


逻辑或


表达式||表达式


左到右


双目运算符


13


?:


条件运算符


表达式1?

表达式2: 表达式3


右到左


三目运算符


14


=


赋值运算符


变量=表达式


右到左


--


/=


除后赋值


变量/=表达式


--


*=


乘后赋值


变量*=表达式


--


%=


取模后赋值


变量%=表达式


--


+=


加后赋值


变量+=表达式


--


-=


减后赋值


变量-=表达式


--


<<=


左移后赋值


变量<<=表达式


--


>>=


右移后赋值


变量>>=表达式


--


&=


按位与后赋值


变量&=表达式


--


^=


按位异或后赋值


变量^=表达式


--


|=


按位或后赋值


变量|=表达式


--


15



逗号运算符


表达式,表达式,…


左到右


--

时间: 2024-08-08 17:48:02

宏定义_最大最小值的相关文章

linux C宏定义 转

写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef  unsigned char      boolean;     /* Boolean value type. */ typed

常用的C语言宏定义

常用的C语言宏定义 1,防止一个头文件被重复包含      #ifndef COMDEF_H      #define COMDEF_H          //头文件内容      #endif       2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植.       typedef   unsigned char       boolean;      /* Boolean value type. */             typedef   uns

C语言宏定义使用技巧

写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef  unsigned char      boolean;     /* Boolean value type. */ type

[转]c语言宏定义#define的理解与资料整理

原文地址:http://www.cnblogs.com/haore147/p/3646934.html 1. 利用define来定义 数值宏常量 #define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代码就就都认识这个宏了:也可以把任何东西定义成宏.因为编译器会在预编译的时候用真身替换替身,而在我们的代码里面却又用常常用替身来帮忙. 看例子: 1 #define PI 3.141592654 在此后的代码

c语言宏定义详解

1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数 差异,方便移植. typedef  unsigned char      boolean;     /* Boolean value type. */ typedef  unsigned long int  uint32;      /* Unsigned 32 bit value */ type

宏定义中的#,##,...,do{}while(0),__VA_ARGS__

宏定义中的#,## 1.在一个预处理器宏中的参数前面使用一个#,预处理器会把这个参数转换为一个字符数组 #define syslog(a) fprintf(stderr,"Warning: " #a"\n"); 2.简单的说,"## "是一种分隔连接方式,它的作用是先分隔,然后进行强制连接 举列 -- 试比较下述几个宏定义的区别 #define A1(name, type)  type name_##type##_type 或 #define A

ios 宏定义 系统版本 判定

====================================================== 当需要判断iOS系统版本的时候,相信很多人都会这么干: #define SystemVersion [[UIDevice currentDevice] systemVersion].floatValue 现在告诉屌丝们一个更好的办法就是其实系统已经做了类似的宏定义,不需要我们再去定义了 在Simulator-IOS7.0/usr/include/Availability.h中已经定义了很

宏定义的黑魔法 - 宏菜鸟起飞手册

转载:https://onevcat.com/2014/01/black-magic-in-macro/ 宏定义在C系开发中可以说占有举足轻重的作用.底层框架自不必说,为了编译优化和方便,以及跨平台能力,宏被大量使用,可以说底层开发离开define将寸步难行.而在更高层级进行开发时,我们会将更多的重心放在业务逻辑上,似乎对宏的使用和依赖并不多.但是使用宏定义的好处是不言自明的,在节省工作量的同时,代码可读性大大增加.如果想成为一个能写出漂亮优雅代码的开发者,宏定义绝对是必不可少的技能(虽然宏本身

iOS开发分分钟搞定C语言 —— 宏定义和关键字

一.宏定义 概念:宏定义实质是一个预编译指令,在程序未运行之前将某些指令付给相应的变量.一般情况预处理指令都是以#号开头的,所以宏定义也是以#开发,关键字为#define(定义宏定义),#undef(结束宏定义). 定义格式及作用域 一般宏定义都定义在程序的首段: #define 宏名 值. 宏定义的作用域:从开始定义的那行起,一直到文件末尾,虽然默认情况下宏定义的作用域是从定义的那一行开始, 一直到文件末尾.但是我们也可以通过对应的关键字#under提前结束宏定义的作用域. 宏定义规范 一般情