黑马程序员技术交流社区

标题: 关于三元运算符的问题 [打印本页]

作者: why910107    时间: 2016-6-6 22:59
标题: 关于三元运算符的问题
class H {
public static void main(String [] args){                                                  
        int a=1,b=2;
    int c = (a+b>3?a++:++b);

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        }
}
a,b,c的结果是什么???? 为什么???
作者: a2068604    时间: 2016-6-7 00:10
a=1 b=3 c=3    a=1没什么疑问,因为int c 运算a没有自增,b=3是因为 int c运算不满足a+b>3?,所以取值++b,也正是因为++b自增了一次,所以B等于3,既然b=3了 必然赋值给了c所以c=3。但是假设是b++ 那么答案是c=2 b=3,
作者: a2068604    时间: 2016-6-7 00:13
因为b++是先赋值再自增一次,而++b是先自增在赋值给C。
你的疑问应该是为什么int a =1; int b = 2,为什么打印出来 b的结果不同?
就是因为自增 b++和++b运算造成的,因为你的变量定义在主函数会记录他的自增
作者: ancheng    时间: 2016-6-7 00:22
  1. public class Test2 {

  2.         public static void main(String[] args) {

  3.                 int a = 1, b = 2;
  4.                 int c = 0;
  5.                 //这个if..else代码与下面的三元运算符是等价的
  6.                 if (a + b > 3) {
  7.                         c = a++;         //如果a+b>3,则先把a的值赋给c,然后a自增1
  8.                 } else {
  9.                         c = ++b;     //如果a+b<=3,则先让b自增1,然后把b的值赋给c
  10.                 }
  11.                 //int c = (a + b > 3 ? a++ : ++b);

  12.                 System.out.println(a);
  13.                 System.out.println(b);
  14.                 System.out.println(c);
  15.         }
  16. }
复制代码

作者: 善良的死神达乐    时间: 2016-6-7 00:39
a++:先赋值后自增,++b:先自增后赋值...不管先还是后,它的值都会发生改变....只是赋值给左边的时候不一样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2