2016-11-06 48 views
3

当从一个函数返回时,下面的编码风格确实似乎工作 -为什么最终结果会有所不同?

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 ; 

中旬,L,R,N都是整数。

有人可以帮我理解为什么吗?

+1

如果您发现下面的答案有用,您应该考虑通过点击复选标记图标来接受其中的一个答案。 – 2016-11-06 00:57:05

回答

3

您需要添加括号为 '+' 在三元运算符采用precedence ':'

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

谢谢quantdev! –

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); 
+0

谢谢AlexD! –

相关问题