首先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. |