#define min(x,y) (x<y)?x:y main() { int i,j,k; i=10;j=15; k=10*min(i,j); printf("%d",k);}

答案为什么是10
2025-03-04 06:05:01
推荐回答(5个)
回答1:

min只是简单的字符替换,10*min(i,j); 展开后变成10*(i

回答2:

k = 10*(x因为*的优先级大于?:,所以先计算10*(10<15) = 10
所以k=10?10:15
所以结果为10,因为条件表达式的条件10为真。

回答3:

min(x,y)是一个宏,编译时宏代码会被直接替换,替换之后展开如下:
k=10*(xk=10*(i由于*操作的优先级比?:操作的优先级高,即有k=10*1?i:j;因此k=i!

回答4:

define 定义一个宏在预编译时会进行简单的替换,则k=10*(x

回答5:

k=10*min(i,j);因为min(i,j) (i答案为15 而不是10
如果#define min(x,y) ((x