A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 825176857 中级黑马   /  2015-7-15 09:49  /  481 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class Demo {

        public static void main(String[] args) {
                byte a=127;
                int x=++a;
                int y=a+1;
                int z=a++;
                System.out.println("x="+x+"y="+y+"z="+z);
        }

}
x=-128y=-127z=-128
咋是负的呢?

1 个回复

正序浏览
byte的范围是-128~127
超过这个范围byte会取 最后8位当补码
++a操作a大于127了,取补码10000000
10000000的原码是-128
得x=-128
y=a+1 即-128+1=-127,a依然为-128
z=a++ 先把a赋给了z再运算 因此z=-128 ,a其实变换成了-127

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马