幾個運算符如何正確運算

1.

char a = 10;
System.out.println(a++ +10*4-2/2);

我的理解:10*4= 40  ;  2/2=1 ;  40-1=39;  39+10=49 ;  49++ = 50

但正確答案是:49


2.

byte a =127;

System.out.println(++a);

我的理解:128

正確答案:-128

3.

char a =0; int b=10;

System.out.println(- -a+b);

我的理解:10

正確答案:65545



ann800213
浏览 1385回答 1
1回答

乐观的z小筱

对于1你的理解是对的,只不过a++它是先参加输出,再自加。你可以在最后添加一句输出a的值。System.out.println(a++ +10*4-2/2);//这一句其实等价于System.out.println(a+10*4-2/2);a=a+1;对于2,3都是由于数据类型的取值范围造成的,超过了范围数据溢出了,对于2,将a用二进制表示出来,byte是1个字节,也就是8位,取值范围是-128~127   ,a:0111 1111,进行了加1后变为1000 0000,首位为1就代表是负数,负数在计算机中是以补码(数值得绝对值的二进制反码+1)的形式存储,求十进制时将其-1再求反即可得到数值,加上负号即为所求原负数。对于3,与2的解释相同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java