- 1、如题,试写出输出结果:
int a = 1, b = 10;
int temp1 = 0 < 1 ? a++ : b++;
System.out.println("a = " + a + ", b = " + b);
System.out.println("temp1 = " + temp1);
- 2、如题,试写出输出结果:
int c = 1, d = 10;
int temp2 = 0 < 1 ? c = c + 1 : d + 1;
System.out.println("c = " + c + ", d = " + d);
System.out.println("temp2 = " + temp2);
- 3、如题,试写出输出结果:
char a = 'A';
int i = 0;
System.out.println((true ? a : 0) + "," + (false ? i : a));
下面先给出上面三道题的答案:
1、a = 2, b = 10
temp1 = 1
2、c = 2, d = 10
temp2 = 2
3、A,65
-
题1,主要说明三目运算符只执行正确的那一个,temp1得到的值是a++,而a++赋值结果就是a,直到下一步a才变为a+1。
-
题2,主要的问题出在最后的d+1上面,因为没有打括号,所以就只会选择d,然后temp2再加1得到新的temp2。
-
题3,这个结果就有点出乎意料了,当执行false ? i : a时,打印出来的结果是65,这很明显是大A的ASC码值,为什么不是A直接被打印出来呢?(这里博主也暂时不知道为什么,等想到了再来结这个贴了)
ps:希望各位多多指教。