作者ninteen (小美)
看板java
标题Re: [请益]关於型别转换
时间Wed Dec 3 04:43:47 2008
※ 引述《vic1225 (/* I'm not worth */)》之铭言:
: 在java中
: byte a, b, c;
: a = b + c;
: b , c 会被先转成int然後相加
: 然後何在转成byte指定给a
: 这应该是表示 int 的范围比byte小吧
: 还是??
: byte -> int in java
: 相当於
: double -> int 还是 int -> double in C 呢
: 感激不尽~!
不知道有没有搞错你的问题
但 a = b + c; 这个指令编译不会过
原因你自己已经说了
运算时JAVA会自动把小於int的形态转成int才作运算
所以b + c视为二个int在作运算
当然运算结果视为int
而把int放到a是不正确的
因为a是byte形态,比int还小
JAVA中把小东西放到大空间会作自动转型
但大东西要放到小空间则必须作强制转型
所以正确的写法应该是
a = (byte)(b + c);
但必须考虑运算结果转型後的精确度问题
另外给个有趣的例子
byte a=3;
a = a + 1; (同样是错的,原因同上)
正确的写法
a = (byte) (a + 1);
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 24.17.240.114