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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ...... 中级黑马   /  2013-10-11 22:45  /  1579 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ...... 于 2013-10-12 00:11 编辑

int i = 266;
byte b = (byte) i;
b不应该是10??我按照二进制算出来的是10,书上的例子给出的输出结果也是10;为什么程序运行出来是-30?
哪个地方错了???求教。。。

1.png (16.84 KB, 下载次数: 262)

自己计算的结果

自己计算的结果

2.png (34.58 KB, 下载次数: 257)

程序代码

程序代码

2013-10-11_224410.png (26.08 KB, 下载次数: 210)

程序运行结果

程序运行结果

点评

图片不清晰,建议把代码贴出来  发表于 2013-10-11 23:08

评分

参与人数 1技术分 +1 收起 理由
李江 + 1

查看全部评分

9 个回复

倒序浏览
额,为什么我按你的代码敲了之后就得到10呢。。
  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 int m = 266;
  4.                 byte a =  (byte)m;
  5.                 System.out.println(a);
  6.         }
  7. }
复制代码
确实是10啊~

点评

System.out.println(a);//此处的a是int类型还是byte类型?  发表于 2013-10-11 23:10
回复 使用道具 举报

public class BisicLearn {

        //类型的强制转化可能会改变其数值
        public static void conversionType()
        {
               
                int i=226;
                byte b= (byte)i;
                System.out.println("int 226 to byte is "+b);
               
        }
        public static void main(String[] args) {
               
                conversionType();
        }

}
是不是跟机器字长有关?我的32位机器,win7系统
回复 使用道具 举报
bird_not_fat 发表于 2013-10-11 22:57
额,为什么我按你的代码敲了之后就得到10呢。。确实是10啊~

public class BisicLearn {
         public static void main(String[] args) {
               
                //conversionType();
                int i = 266;
                byte b = (byte)i;
                System.out.println(b);
        }

}
我这样写运行结果也是10,但是当我把这个运算放到一个函数里去的时候,就结果就成了-30
回复 使用道具 举报
拜托,
图一中:int i=266
图二中:int i=226
回复 使用道具 举报
飘落 发表于 2013-10-11 23:51
拜托,
图一中:int i=266
图二中:int i=226

谢谢。。。真是太不细心了。。。
回复 使用道具 举报
bird_not_fat 发表于 2013-10-11 22:57
额,为什么我按你的代码敲了之后就得到10呢。。确实是10啊~

应该是byte类型吧~~
回复 使用道具 举报
dolphin 中级黑马 2013-10-12 03:21:51
8#
两变量的值不一样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马