令short x=32767,分别执行x=x+1和++x,前者显示类型转换错误(int到short要强制转换),而后者则运行通过(x变成-32768),++x难道不和x=x+1等价吗,还是前者自带了一个强制类型转换?

解决方案 »

  1.   

    在x+1的运算中x为short型,1为int型,他们相加的结果为int类型,所以运算时会发生类型转换错误;而++x是在x原值的基础上加上一个short类型的1,运算结果是short型,不会发生错误
    因此二者并不是完全等价的
      

  2.   

    在这里++x等价于x=Convert.ToInt16(x+1)
      

  3.   

    ++x与x++的区别..
    你能懂他两的区别应该就懂这个了..
    x=x+1
    short都会类型转换成int计算..
    exp:short a=1;
    short b=2;
    short c=a+b;//仍会报类型错误
    (short) c=a+b;
    或者 int c=a+b;
      

  4.   

    恩 1f正解,我没考虑到1的类型情况,以为是++x自动做了个(int)(x+1)的操作,如果两者相加的1本来就是两种不同类型的话,那产生两种不同的结果就很合理了
      

  5.   

    如果计算过程中short都会类型转换成int来计算的话,那不就是说在这种情况下++x又自动做了个强制类型转换,重新将int型转换成了整型?
      

  6.   

    在x+1中x为short型,1为int型,结果为int类型,要强制转化
    ++x是short类型加1
      

  7.   

    short s1 = 1; s1 = s1 + 1;有错,s1是short型,s1+1是int型,不能显式转化为short型。可修改为s1 =(short)(s1 + 1) 。short s1 = 1; s1 += 1正确。