看了回答,虽然说的没错,但我觉得回答得不够好,我来说一下我的看法。
我自己去编写运行了,并且每条程序右边都标有注释:
这里要提一下C语言里的条件表达式。
条件运算符:?:
条件表达式的一般形式:表达式1 ? 表达式2 : 表达式3
优先级:13
§结合方向:自右向左
功能:n相当于条件语句,但不能取代一般if语句
例子:
宏都是为了简略写法而发明出来的,其实非常简单,就是直接代入就知道了。代入得:k = 10 * 2 < 21 ? 2 : 21;乘法优先级比三目表达式的高,所以就会变成:k = 20 < 21 ? 2 : 21;所以结果是2。
因为宏展开的结果是:
k=10*(2)<(21)?(2):(21);
而20<21为真,所以,k=2