C语言,这个题目为啥答案是15呀?

2025-04-07 00:19:22
推荐回答(2个)
回答1:

宏展开后表达式为
k=10*(i)<(j)?(i):(j)
显然10*10<15为假,所以应该是15

回答2:

直接把10*MIN(10,15)换成了10* (10)<(15)?(10) : (15)
此时先算左边的乘法10*10=100,再来判断100<15是真还是假,结果是假,所以最终整个式子的值是15.要想得到结果是100,宏定义应该写成#define MIN(x,y) ((x)<(y)?(x) : (y))