java 运算符优先级及运算符结合方向

publicstaticvoidmain(String[]args){inti=0;System.out.println(true?false:true||true?++... public static void main(String[] args) {
int i=0;
System.out.println(true?false:true || true?++i:i--);
System.out.println(i);
}

运行结果是false 0
true?false:true || true?++i:i--的运行过程我是这样想的:因为||的优先级高于三目运算符的优先级,所以先计算true||true 结果为true 然后三目运算符结合性自右向左,再计算true?++i:i--;i就已经自增为1了,最后计算true?false:1(i) 结果为false。但是运行结果i是为0的,请问我哪里错了 求大家帮帮忙,我到底哪里想错了??想了一天了 在线等 急,讲明白了 马上给分 通俗易懂 加至50分
展开
 我来答
匿名用户
2014-10-25
展开全部

三目运算符

a?b:c

先算a,看情况再算 b 或 c ,如果 a 为真就只算 b 否则只算 c 。这是跟结合性无关的。


好比

 1 + 99 + 3 * 4

虽然乘法的优先级高,但是你完全可以先算 1 + 99

更多追问追答
追问
结合性自右向左不就是说,只有两个三目运算符时,从右向左运算的意思吗?
那结合性是怎么用的??
zhongtyler
2014-10-25 · TA获得超过4408个赞
知道大有可为答主
回答量:4384
采纳率:79%
帮助的人:1028万
展开全部
你的理解错误了,三目运算符其实是t一个简化的判断语句,所以当第一个true满足就进入false,然后结束了。所有对三目的判断可以参考if
更多追问追答
追问
但是这里还有个或运算符啊,不同优先级的运算符存在,就要考虑按照运算符优先级吧?还有三目运算符的结合性自右向左,这个是怎么用的啊?
你的意思就是先计算了左边的三目了嘛……我觉得是违反了,运算符优先级和运算符结合性的规定了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小威James
2018-05-16
知道答主
回答量:12
采纳率:0%
帮助的人:9235
展开全部
运算符优先级(精简总结看不懂请轻喷)
1()、[]、+、-
2算数运算符 *、/、%、+、-
3位移运算符 <<、>>、>>> 用于二进制的数字运算
4比较运算符 >、>=、<、<=、==、!=
5逻辑运算符 &、^、|、&&、||
6三元运算符 ? :
7赋值运算符 =、+=、-=、*=、/=、%=
8位赋值运算 &=、|=、<<=、>>=、>>>=
小括号,中括号,正负号,非,乘除,取余,非优先于优先于连接符.
自增自减在变量前面优先于算数运算符,次于连接符号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式