int a = 10;
int b = a++;
先取值,再自加
然后我们老师上课说到a++运算会转换数据类型
给我们举了一个int a++ 后强转short的例子
当然他失败了……
然后我就去查了一下,short  a;a+=1; 
a会被自动转成int
那a++到底有没有类型转换?萌新顺便问一下这个给分数是啥啊

解决方案 »

  1.   

    你估计上课没好好听,你们老师肯定不是这么说的。
            byte b =1;
            short s =2;
            char c = 3;
            int i = 4;
            b = (byte)(b+s+c); //byte,short,char类型在进行运算时会自动转成int型
            b+=s; //赋值运算符自带强转功能
            //s = c++ ;不能将char类型的数据转为short类型,因此自增运算符不具有强转功能
            i = s++; //这里的s++是short型,但是如果赋值给int类型的i的话会发生自动类型转换
            s = b++; //同上,byte类型自动转为short
      

  2.   

    short a =1;
    a++

    short a =1;
    int b;
    b=a++;
    是一样的,a++的值就是int类型的。类型转换分1.自动类型转换和2.强制类型转换
    一般我们无须在意,因为你一般写代码都是使用的自动类型转换,系统会给你转换好,无须你自己操心。
    自动类型转换是将表示范围小的数据类型赋值给表示范围大的数据类型时,Java自动使用隐式类型完成数据类型转换,即
    低------------------------------------------------------------------------------------------------------------------->高
      byte  ------------>  short/char  ------------>  int  ------------>  long  ------------>  float  ------------>  double
    而强制类型转换就是比如说你的数据是float类型的,但是输出结果你要的是int类型的,这个时候你就要强制类型转换。(如下)在a前加一个括号写上你要转换的类型。
    float a=1.5f;
    int b= (int)a;
    这个给分数应该是你这个问题我们要是回答了你就会给我们的分数吧,我不太清楚,因为我从来没有自己发过贴,你要是明白你这个题的话就赶紧结账吧
      

  3.   

    是啊,但是也有前置和后置,++a和a++之分。具体的记住:++在前,要“”等“”口诀。即++a就是b=a;a=a+1;
    而a++是a=a+1;b=a;