short s1 = 1; s1 = s1 + 1;//有什么错?
short s1 = 1; s1 += 1;//有什么错?
对于第一句s1 = s1 + 1存在一个int不能隐式转换为short的错误,在编译器将s1 = s1 + 1进行编译的时候,会将1自动编译成int32类型,并且等式右边的s1会隐式转换为int32,再和1相加,从而结果为int32类型,而等式右边是short类型,int32不能隐式转换为short所以错误
而第二句 s1 += 1,编译器在进行编译的时候是这样s1=(short)(s1+1);把他们相加的结果在进行强类型转换!故没有错误! |