黑马程序员技术交流社区

标题: +=得原理与++运算符 [打印本页]

作者: 梦之蓝2015    时间: 2015-3-10 09:48
标题: +=得原理与++运算符
int x;x=x+1;
x+=1;
x++;
运算的底层是什么?有什么区别
若果把变量换成byte x;呢

作者: 习惯就好    时间: 2015-3-10 10:10
如果你将x的类型变成byte的话,x=x+1就不回通过,提示你类型不匹配,其他的都通过,因为其他的在运算的过程中已经自转了
作者: Dark县令    时间: 2015-3-10 10:41
首先x=x+1因为它的执行过程如下:1,读取右边变量 x 的内存地址;2,执行 x+1;3,读取左边变量 x 的内存地址,4将右边的值传给左边的变量 x(次运算并不是简单的比较大小而是在底层的物理地址)。
而x+=1是执行过程如下:1. 读取右x的地址;2. x=1;3. 将得到的值传给x(因为x的地址已经读出)。
在x++是执行如下:1.读取右边变量 x 的内存地址;2.变量 x 自增1。如果换成byte则x=x+1不能通过因为:
首先声明的x是属于byte短整形,在x=x+1中后面一段x+1里面1属于int型x就会有一个自动转换变成1所述的的int型然后x+1两个int类型的相加就得到int型在赋值给=前面的x型的时候前面属于byte类型,所以int型不能直接赋值给byte型出现错误容易丢失精度简单的说就是属于两部运算先算的是x+1然后在赋值给x.
作者: ㏒假™面具    时间: 2015-3-10 23:15
int型没有问题,如果byte,x = x+1,会报错,因为运算时先将数据类型进行了自动提升。




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