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
1 回答
乐观的z小筱
TA贡献1条经验 获得超1个赞
对于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的解释相同。
添加回答
举报
0/150
提交
取消