从函数返回时,以下编码样式 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 都是整数。
有人可以帮我理解原因吗?
答案 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);