栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言】比较2个数和3个数大小

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言】比较2个数和3个数大小

最高级的写法在 kernel/include/linux/kernel.h

考虑三目运算符,宏替换语句导致错误语法逻辑,语句表达式,运算符优先级,++导致的参数变化,类型检查。

看了让人赞叹
#define min(x, y) ({            
                                
    typeof(x)  _min1 = (x);     
    typeof(y)  _min2 = (y);     
    (void)(&_min1 == &_min2);   
    _min1 < _min2 ? _min1 : _min2; })

#define max(x, y) ({             
    typeof(x)    _max1 = (x);    
    typeof(y)    _max2 = (y);    
    (void)(&_max1 == &_max2);    
    _max1 > _max2 ? _max1 : _max2;    })


#define min3(x, y, z)    ({            
    typeof(x)    _min1 = (x);          
    typeof(y)    _min2 = (y);          
    typeof(x)    _min3 = (z);          
    (void)(_min1 == &_min2);           
    (void)(_min1 == &_min3);           
    _min1 < _min2 ? (_min1 < _min3 ? _min1 : min3) :    
        (_min2 < _min3 ? _min2 : _min3);        })

#define max3(x, y, z) ({                
    typeof(x)      _max1 = (x);         
    typeof(y)      _max2 = (y);         
    typeof(z)      _max3 = (z);         
    (void)(&_max1 == &_max2);           
    (void)(&_max1 == &_max3);           
    _max1 > _max2 ? (_max1 > _max3 ? _max1 :_max3):    
        (_max2 > _max3) ? (_max2 : _max3);    })

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/528900.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号