C中三元运算符的优先级
优先级很低,往往需要加一个括号
在求二叉树的高度遇到的问题,属于对C不熟悉导致的bug
// ret的值为20,ret1的值是22
int a = 10, b = 20;
int ret = 2 + a>b?a:b; // 先计算2+a, 2+a>b为假,因此ret的值是20
int ret1 = 2 + (a>b?a:b); // 先计算(a>b?a:b),然后再计算2 + (a>b?a:b),因此ret1的值是22
// 最稳妥的写法
int ret2 = 2 + ((a>b) ? (a) : (b));