各位,相信 a+=b 和 a = a+b大家都有写过,那你有没有思考过这二者究竟是不是完全等价的呢?
其实这个问题的难点就在a和b的数据类型上,要分两种情况:
1、对于同样类型的a,b来说
两个式子执行的结果确实没有什么区别。但是从编译的角度来看,a+=b;执行的时候效率高。
2、对于不同类型的a,b来说
不同类型的两个变量在进行运算的时候,我们经常说到的是类型的转换问题。这里,请记住一点:运算过程中,低精度的类型向高精度类型转换。
#include<stdio.h>
int main()
{
int b = 5;
char a = 3;
a += b;//编译通过
a = a + b;//编译出错
printf("%d", a);
}
在上面的代码中,如果使用+=,b会直接转换成 char,如果使用a+b,a首先转换成int,最后赋值的时候再转换成char。
因此,总的来说,a=a+b;和a+=b;并不是任何时候都等价,要分情况视之,原因就在数据类型转换这里,希望大家以后对这两者慎重使用。