求解释c语言带参的宏 比较大小的意思
#definezuida(a,b,c)((a)>(b)?(a>c?a:c):(b>c?b:c))//宏的比较大小什么意思...
#define zuida(a,b,c) ((a)>(b)?(a>c?a:c):(b>c?b:c))//宏的比较大小
什么意思 展开
什么意思 展开
2个回答
2014-12-06
展开全部
#define zuida(a,b,c) ((a)>(b)?(a>c?a:c):(b>c?b:c))
程序编译时会【原样替换,不作运算】宏,故程序中宏zuida(a,b,c)等价于((a)>(b)?(a>c?a:c):(b>c?b:c))
所以遇到宏直接把它还原成它等价的语句即可
经查询三目运算符运算规则如下: b ? x:y,先计算条件b,然后进行判断。如果b的值为true,取x的值;否则,取y的值。
( {(a)>(b)?【(a>c?a:c)】:【(b>c?b:c)】} )
①Y/N ? ②Y/N ?a:c : ③Y/N?b:c
Y/N ? A : B
分别计算②③的运算结果为A、B最后计算①的结果:真或假,真就取值A假就取B,所以这个宏就是求三个数的最大数的
程序编译时会【原样替换,不作运算】宏,故程序中宏zuida(a,b,c)等价于((a)>(b)?(a>c?a:c):(b>c?b:c))
所以遇到宏直接把它还原成它等价的语句即可
经查询三目运算符运算规则如下: b ? x:y,先计算条件b,然后进行判断。如果b的值为true,取x的值;否则,取y的值。
( {(a)>(b)?【(a>c?a:c)】:【(b>c?b:c)】} )
①Y/N ? ②Y/N ?a:c : ③Y/N?b:c
Y/N ? A : B
分别计算②③的运算结果为A、B最后计算①的结果:真或假,真就取值A假就取B,所以这个宏就是求三个数的最大数的
追问
谢谢
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询