前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >a+=b 和 a=a+b 真的完全等价吗?

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

作者头像
Power7089
修改2020-07-28 17:17:04
1.2K0
修改2020-07-28 17:17:04
举报
文章被收录于专栏:闪石星曜CyberSecurity

各位,相信 a+=b 和 a = a+b大家都有写过,那你有没有思考过这二者究竟是不是完全等价的呢?

其实这个问题的难点就在a和b的数据类型上,要分两种情况:

1、对于同样类型的a,b来说

两个式子执行的结果确实没有什么区别。但是从编译的角度来看,a+=b;执行的时候效率高。

2、对于不同类型的a,b来说

不同类型的两个变量在进行运算的时候,我们经常说到的是类型的转换问题。这里,请记住一点:运算过程中,低精度的类型向高精度类型转换。

代码语言:javascript
复制

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员阿甘 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档