你想问什么?设a=1,b=2,c=3 计算表达式a+=c++/--b运行之后,a的值是4怎么获取的?
我暂且当你问的是这个,如不是再追问。下面解答。
这里有一个知识点,是说当一个变量自身进行相加,有几种方式,假设变量int i=0,要自增这个变量变为1有如下做法:
i++
++i
i+=1
这三种区别很重要,这样就知道最后的结果。
前两种都是要先在内存开辟一块新空间,先自身相加在返回新空间值,只是前置(就是加号放前面)改变新空间值,后置未改变新空间值,那么这样有什么区别呢
int i = 0;
int s = i++; //此时i先在内存打开一块新空间,然后把自己的值存放进去,为0,然后自身加1,然后把空间中的值赋值给s,这样s等于0,而i=1;
int s = ++i; //此时i先在内存打开一块新空间,然后自身加1,然后把自己的值存放进去,为1,然后把空间中的值赋值给s,这样s等于1,而i也等于1;
再说第三个i+=1, =+这个符号是java语言里封装好的一种符号,在使用过程是自身相加后面数,意思是说 x+=y就相当于x=x+y ,但是这里它俩还不完全一样,结果一样,但是过程要仔细看,比如:
byte x = 1;
int y = 2;
x += y; //那么x = 3; 这里没错。
x = x + y; //这里代码就有错误了,原因是byte存储空间要比int小,java中byte为1个字节存储空间,int占4个字节,当你想把一个大胖子放在一个很小的空间中,是要告诉系统一声,免得撑爆了 - -! 那么应该这样做 x = (byte)(x+y); 这样就可以强制转换为byte类型,可以获取结果,但是这里多说一句,byte类型的取值范围只有-128 ~ 127,如果你强制的转换过去的值不在这个范围,程序不会报错,但是拿到的结果就不是你想要的了。
说你的程序:设a=1,b=2,c=3 计算表达式a+=c++/--b
c++ 此时c还是3
--b 此时b是1
3/1等于3 ,因为是+=符号,再用这个结果加上之前的a,就是4.
java中int只保留小数点前面部分(注意不是四舍五入,是全部舍去!)。
不懂追问即可!
作业帮用户
2017-07-14
举报