日期:2014-05-16  浏览次数:20570 次

[求助]c语言有关?:的问题。
输入a,b,c 三个整数,求最大者,用 k = a>b?a:b>c?a>b?a:b:c,如果三个数是 2 6 9 ,程序对各种顺序都能找出最大的数 9,唯独输入顺序为6 2 9 时,输出却是 k = 6。当然,将 a>b?a:b 加上括号就全部正确了。有哪位能详细解释一下其中的原因吗?主要是c的编译对于不加括号时的分析过程是怎样的?包括运算顺序等等,请详解。

------解决方案--------------------
优先级
------解决方案--------------------
int k = a>b?a:b>c?a>b?a:b:c; 等价于 int k = a>b?a:(b>c?a>b?a:b:c);