因为a=a-1;a-1的结果是int类型,需要a = (byte)(a-1);

解决方案 »

  1.   

    http://community.csdn.net/Expert/topic/3616/3616510.xml?temp=.2288324
      

  2.   

    +=
    -=
    都是1个操作符(类似对操作符的重载)    byte a =123;                    
        a += 1.9;  
    这都都没问题类似  a+=b;  //类似 a=(byte)(a+b)
      

  3.   

    因为a是byte型的,占1个字节,而1是int型的,占4个字节。在两个类型的值相加的时候,会发生自动类型的提升。也就是说a+1后,其结果是int型的,而不是byte型的,所以可以想想看,把4个字节的东西放在两个字节的空间里,肯定编译不通过。后面的那个不会发生类型的提升,是在其基础上加了一个1,还是byte型,相当于a =(byte)(a+1),所以不会出错。