发布网友
共5个回答
热心网友
int a = 1 ? 2 : 3 ? 4 : 5;
如果从左到右结合,即a = (1 ? 2 : 3) ? 4 : 5 = 2 ? 4 : 5 = 4;
如果从右到左结合,即a = 1 ? 2 : (3 ? 4 : 5) = 1 ? 2 : 4 = 2;
实际运行int a = 1 ? 2 : 3 ? 4 : 5;得到a=2;即条件运算符是从右到左结合的。
从这个结果可以理解出是从右到左结合的,至于为什么要从右到左,我只能说这是语法规定。
热心网友
谁跟你说是从右到左的。你估计是把赋值语句当成从右到左了。
比如
a = (c <0 )? 1 : 2;
(c <0 )? 1 : 2;这个才是三元式。
如果c小于0也就是c<0为true,则整个三元式等于1,所以赋值给a等于1.
反之为false,则整个三元式等于2,所以赋值给a等于2追问你们最好去看看Java基础知识的书,如果书上没有我也不会提出这样的问题。
追答书名叫什么,我想你看到了什么烂书了吧,很多人懂点知识就出书了,不要被误导了。
热心网友
谁说的从右到左的?
=(赋值)是从右向左的,
你的三目运算肯定是给别的赋值,所就这样了:
int num=表达式?结果1:结果2
如果表达式为真,就把“结果1”给num
如果表达式为假,就把“结果2”给num
明白了吧。追问你们最好去看看Java基础知识的书,如果书上没有我也不会提出这样的问题。
热心网友
(condition)?a:b
的意思就是
if(condition){
a;
}else{
b;
}
这是个条件语句,不存在从右向左还是从左向右,懂了吧?
热心网友
你能说是从左到右的,也可以说是从右到左的,就这个例子来说吧,上面给你说了从右到左的思路,我来说一下从左到右的思路,看你个人喜欢那种了,我比较习惯左到右:
int a = 1 ? 2 : 3 ? 4 : 5;
直接运行输出的是2,实际上是1为true,系统直接寻找紧挨着下面的冒号左边的值,即2.你可以试一下把2换成任意数字,都会是该值。
那么问题来了,有人会说这样也不能去说明就是左到右啊,那么你把1改成0,就是
int a = 0 ? 2 : 3 ? 4 : 5;
系统会判断0为false。直接执行紧接着冒号右边的值,发现右边又是一个式子,右边的式子返回值是4,答案还是4.你反过来算也一样的,自己可以实践一下。所以看个人喜欢的看法吧,