关于三元运算符小研究一番

举个栗子:

 "a" == "a" ? "是" : "否" + "a" == "v" ? "是" : "否"

  按照自己最初的想法,应该输出:是否。

结果并不是,见图输出1

这就涉及到三元运算符的优先级,和结合方式。

首先:三元运算符的运算优先级低于”()“,”+“等;

其次:三元运算符是右结合(从右至左)。

所以自己刚写的运算表达式,相当于:

 "a" == "a" ? "是" :(  ("否" + "a") == "v") ? "是" : "否")

  分解步骤:

1、先计算"否"+"a"-->"否a";

2、"否a" == "v" ? "是" : "否" ,取"否";

3、 "a" == "a" ? "是" :"否",取"是"; 即图中的输出1。

第二个表达式只是验证,因为,"a"=="a" 就取"是"了,后面的计算其实都是浪费。

 "a" == "b" ? "是" : "否" + "a" == "v" ? "是" : "否"

 见输出2:"否"。

下面的"输出3”,"输出4”,"输出5”,是步步验证。

 此三元运算符优先级问题,之前有碰到过,但是未深究,现一次性解决。

posted @ 2018-06-27 18:18  尘世书童  阅读(131)  评论(0)    收藏  举报