为什么最终结果有所不同?

时间:2016-11-06 00:46:07

标签: function syntax return

从函数返回时,以下编码样式 NOT 似乎有效 -

    return (int) minim(mid-l,r-mid) + (int) (mid+mid==n)?1:0;

但是下面的代码工作正常 -

    int x = minim(mid-l,r-mid);
    int y = (mid+mid==n)?1:0;
    return x+y ; 

mid,l,r,n 都是整数。

有人可以帮我理解原因吗?

2 个答案:

答案 0 :(得分:3)

您需要添加括号,因为'+'需要precedence而不是三元运算符':'

return (int) minim(mid-l,r-mid) + ((int) (mid+mid==n)?1:0);

答案 1 :(得分:3)

由于运营商precedence

return (int) minim(mid-l,r-mid) + (int) (mid+mid==n)?1:0;

装置

return ((int) minim(mid-l,r-mid) + (int) (mid+mid==n))?1:0;

return (int) minim(mid-l,r-mid) + ((int) (mid+mid==n))?1:0);