首页 > 其他分享 >1)宏定义三目运算符

1)宏定义三目运算符

时间:2024-03-04 23:02:24浏览次数:24  
标签:__ 定义 MIN int 运算符 三目 写法 define

参考:https://www.runoob.com/w3cnote/macro-definition.html

 

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

// (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; })

标签:__,定义,MIN,int,运算符,三目,写法,define
From: https://www.cnblogs.com/tiange-137/p/18052941

相关文章

  • python运算符
    【1】算数运算符运算符说明实例结果+加1+12-减1-10*乘1*33/除法(和数学中的规则一样)4/22//整除(只保留商的整数部分)7//23%取余,即返回除法的余数7%21**幂运算/次方运算,即返回x的y次方2**416,即24【2】赋值运算符......
  • python-数据类型-运算符补充-in and not
    运算符补充点击查看代码in点击查看代码value="我是中国人"#判断‘中国’是否在value所代指的字符串中。“中国”是否是value所代指的字符串的子序列。v1="中国"invalue#示例content=input('请输入内容:')if"退钱"incontent:print('包含敏感字符')#示例......
  • 条件运算符(if,else if,else)
    publicclassday_2_3{publicstaticvoidmain(String[]args){/*if语句*/inti=1;intj=1;//三元运算intmax=i>2?i:2;//if表达式if(i>j){System.out.println(i)......
  • 根据java已经定义好的Class生成DDL SQL
    packagecom.ai.exchange.generator;importcom.baomidou.mybatisplus.annotation.IdType;importcom.baomidou.mybatisplus.annotation.TableField;importcom.baomidou.mybatisplus.annotation.TableId;importcom.baomidou.mybatisplus.annotation.TableName;import......
  • 定义与声明的区别
    在C++中,声明和定义有以下区别:声明(Declaration):声明是向编译器介绍变量、函数、类等的名称和类型。声明不分配存储空间,也不初始化变量。声明通常出现在函数原型、类定义或全局变量声明中。例如,声明一个整型变量inta;,这里只告诉编译器有一个名为a的整型变量,但并没有为它分配存储......
  • C++ 函数调用运算符 () 重载
    函数调用运算符()可以被重载用于类的对象。当重载()时,您不是创造了一种新的调用函数的方式,相反地,这是创建一个可以传递任意数目参数的运算符函数。1#include<iostream>2usingnamespacestd;3classDistance4{5private:6intfeet;/......
  • C++ 赋值运算符'='重载
    C++拷贝构造函数(初学有点难理解)就像其他运算符一样,可以重载赋值运算符(=),用于创建一个对象,比如拷贝构造函数。1#include<iostream>2usingnamespacestd;3classDistance4{5private:6intfeet;//0到无穷7intinches;......
  • C++ ++ 和 -- 运算符重载
    原文递增运算符(++)和递减运算符(--)是C++语言中两个重要的一元运算符。1、递增和递减一般是改变对象的状态,所以一般是重载为成员函数。2、重载递增递减,一定要和指针的递增递减区分开。因为这里的重载操作的是对象,而不是指针(由于指针是内置类型,指针的递增递减是无法重载的),......
  • 百度地图API自定义地图
    <!DOCTYPEHTMLPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content......
  • C++ 输入/输出运算符重载
    C++能够使用流提取运算符>>和流插入运算符<<来输入和输出内置的数据类型。您可以重载流提取运算符和流插入运算符来操作对象等用户自定义的数据类型。在这里,有一点很重要,我们需要把运算符重载函数声明为类的友元函数,这样我们就能不用创建对象而直接调用函数。下面的实例演......