黑马程序员技术交流社区

标题: 类型强转问题 [打印本页]

作者: ......    时间: 2013-10-11 22:45
标题: 类型强转问题
本帖最后由 ...... 于 2013-10-12 00:11 编辑

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

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

自己计算的结果

自己计算的结果

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

程序代码

程序代码

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

程序运行结果

程序运行结果

作者: bird_not_fat    时间: 2013-10-11 22:57
额,为什么我按你的代码敲了之后就得到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啊~
作者: ......    时间: 2013-10-11 23:23

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系统
作者: ......    时间: 2013-10-11 23:32
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
作者: 飘落    时间: 2013-10-11 23:51
拜托,
图一中:int i=266
图二中:int i=226
作者: ......    时间: 2013-10-12 00:02
飘落 发表于 2013-10-11 23:51
拜托,
图一中:int i=266
图二中:int i=226

谢谢。。。真是太不细心了。。。
作者: bird_not_fat    时间: 2013-10-12 00:32
bird_not_fat 发表于 2013-10-11 22:57
额,为什么我按你的代码敲了之后就得到10呢。。确实是10啊~

应该是byte类型吧~~
作者: dolphin    时间: 2013-10-12 03:21
两变量的值不一样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2