在a=a+5;中,a+5运算的结果是int型,把它赋值给一个byte型变量a,所以会报错;
而在a+=5;中,由于是a是byte类型的,所以编译器会先把5强制转换为byte型,然后再参与运算,所以其结果也是byte类型的,因此不会报错;
你第二句a=a+5,那个5是int类型,两个类型不同不能相加。
.NET也是这样
a += 5;是正确的
a = a + 5;是错误的
2楼正解。 而且其实就效率来说, 第一种会更高。
a+=5; 是直接将5加到a所在的内存单元里。
a =a + 5; 会先复制一个空间用以储存a的副本, 然后将5加到上面, 最后再把a+5赋值给a.
当然, 现在的编译器应该会在这方面做些优化~~~俺是菜鸟。。
+= 、-= 、×= 、 /= 和 = 一样都是赋值运算符,使用赋值运算符不仅有更好的性能,还能使程序更健壮。教科书上这么解释的,我觉得再深入下去会比较耗时间。
如果是C语言的教科书,那是对的。
如果是C#的教科书,就是错的
@碧落星痕: 这是在讨论java吧?
把a的类型改为int不就可以了