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

【C语言】比较2个数和3个数大小,第1张

【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);    })

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5520709.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-13
下一篇 2022-12-13

发表评论

登录后才能评论

评论列表(0条)

保存