a+=b 和 a=a+b 真的完全等价吗?

时间:2022-07-22
本文章向大家介绍a+=b 和 a=a+b 真的完全等价吗?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

各位,相信 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;并不是任何时候都等价,要分情况视之,原因就在数据类型转换这里,希望大家以后对这两者慎重使用。