int len=5;如下两个步骤
(1)
if(len==1){
len++;
System.out.println(len);
}else{
len--;
}
(2)
len = (len == 1) ? (len++): (len--);
得到的答案是:(1)4,(2)5
为什么第二个会是5而不是4?难道括号没起作用吗?javaj2sei++
(1)
if(len==1){
len++;
System.out.println(len);
}else{
len--;
}
(2)
len = (len == 1) ? (len++): (len--);
得到的答案是:(1)4,(2)5
为什么第二个会是5而不是4?难道括号没起作用吗?javaj2sei++
int operator++ (int & op) { // 假设这里的op是按引用传递,也就是内部操作会影响到外部的值
int tmp = op;
op = op + 1;
return tmp;
}
这样(2)就变成了这个:
len = (len == 1)? (operator++(len)) : (operator--(len));
跟不用括号返回的值是一样的
这两种len本身的值都自增
++len 是自增1,再把len的值存储起来,之后输出。
public static void main(String[] args) {
int len = 5;
int i = len == 1 ? len++ : len--;
System.out.println(i); // i = 5
System.out.println(len); // len = 4
}
相当于
temp = len--;//temp==5
len = len-1;//len == 4
len = temp;//len == 5感觉,那一瞬间,发生了很多事情。。
len=5;
int x=(len--);
System.out.println(x);
这里的len虽然变成4了但是x打印出来还是5?我就有点纳闷了,括号不是优先级最高吗?为什么不先执行括号里面的
len=5;
int x=(len--);
System.out.println(x);
这里的len虽然变成4了但是x打印出来还是5?我就有点纳闷了,括号不是优先级最高吗?为什么不先执行括号里面的
看我的解释没,1楼
int len1 = 5, len2 = 5;
int x = len1--; // x = 5, len1 = 4
int y = --len2; // y = 4, len2 = 4
跟括号没关系