黑马程序员技术交流社区

标题: 求精确的解决问题 [打印本页]

作者: e644638045    时间: 2014-6-29 10:55
标题: 求精确的解决问题
int i=1
i+=i是什么意思,求回答
作者: 心者觉也    时间: 2014-6-29 11:15
这就要说到编程中,=号代表的是赋值操作,是把=号右边的值赋给=号左边;

int i=1; // 声明变量i,并令i = 1;
i+=i;  //这是简写,等价于 i = i + i;

i = i + i ,就是先算i+i,然后把结果赋给i

最后i = 2;

作者: 謓心い謓意    时间: 2014-6-29 11:27
首先说一下:i=i+1与i+=1,这两个运算符结果是等价的,但理解不是等价的。因为“+=”运算符 内涵了强制转换功能等价于i=(int)(i+1)
作者: 謓心い謓意    时间: 2014-6-29 11:30
还有二楼说
i = i + i ,就是先算i+i,然后把结果赋给i
其实是不对的“+=”运算符加法运算与赋值运算时同时进行的,不存在先算谁,后算谁。
作者: 燿陚√揚葳    时间: 2014-6-29 12:05
学习了.......
作者: ソi苆僞lè袮    时间: 2014-6-29 12:20
int i=1;声明变量i并赋值
i+=i;   i=i+i;的简写
作者: ⋛⋌⋚JEEP    时间: 2014-6-29 13:10
本帖最后由 ⋛⋌⋚JEEP 于 2014-7-3 20:31 编辑

楼上见解都差不多了,我总结一下和补充一点吧!

  1. int i = 1;
复制代码
//声明变量i,将1赋值给变量i,

  1. i += i;
复制代码
//等价于,
  1. i = i+i;
复制代码
;另外,这个“+=”运算符含有隐式进行强制类型转换的 功能,比如,
  1. short s +=2
复制代码
等于
  1. short s =(short)(s+2);
复制代码


再补充一点区别:
  1. i=i+i;
复制代码
,需要右边相加完再赋值左边,2步运算;
  1. i+=i;
复制代码
只需要1步运算,效率高些。
作者: e644638045    时间: 2014-7-1 12:15
燿陚√揚葳 发表于 2014-6-29 12:05
学习了.......

你解释下啊,你都不解释的
作者: 燿陚√揚葳    时间: 2014-7-1 13:37
e644638045 发表于 2014-7-1 12:15
你解释下啊,你都不解释的

额,我也是看过人家的答案,才知道的,以前就没去想过........




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2