A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© why910107 中级黑马   /  2016-6-6 22:59  /  414 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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的结果是什么???? 为什么???

4 个回复

倒序浏览
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,
回复 使用道具 举报
因为b++是先赋值再自增一次,而++b是先自增在赋值给C。
你的疑问应该是为什么int a =1; int b = 2,为什么打印出来 b的结果不同?
就是因为自增 b++和++b运算造成的,因为你的变量定义在主函数会记录他的自增
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
a++:先赋值后自增,++b:先自增后赋值...不管先还是后,它的值都会发生改变....只是赋值给左边的时候不一样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马