int a = 9,b = 11,c;
System.out.println(c = a != b ? a + b : a - b);
打印结果是20
?: 的优先级比较低,放后面
+-的优先级比较高,于是:c = a !=b ? 20 : -2
然后c = a != b这一句我就糊涂了,不知道该怎么办了
从优先级上看,!= 的优先级高于 =
分析不下去了,a != b应该是true。。
c = true 算怎么回事。。
求指教。。
O(∩_∩)O谢谢~
------解决思路----------------------
a != b为true,之后赋值给c,c=true
------解决思路----------------------
???号怎么用
------解决思路----------------------
"="是赋值符号;“a!=b?a+b:a-b”是一条表达式,先这样读:a!=b是否为true?若为true则a+b,若为false则为a-b;上式是true,所以
计算a+b;最后a+b的值赋给c;打印c.
------解决思路----------------------
?:是三目运算符啊,三目运算符的优先级高于各种赋值运算符。
------解决思路----------------------
int a = 9,b = 11,c;
System.out.println(c = a != b ? a + b : a - b);
运算过程是这样的:
首先将算式按照条件语句解析成如下形式
( (c = a != b) ?( a + b ): (a - b) );
就按照条件表达式进行运算,结果就是20
------解决思路----------------------
a !=b为true,所以a !=b ? 20 : -2的值为20,整个代码执行是System.out.println(c=20),所以输出20
------解决思路----------------------
哇,好难。输出20,三目运算符
------解决思路----------------------

这种题也就考试会出现了
实际编程写这样你自己都会懵
懵的地方多加括号就可以了
哪怕是一堆括号也没关系