菜鸟问一个关于short的问题

qingchenyang 2012-05-27 04:07:44
short s = 0;
s = s + s;

第二句会提示让强制转换成short,不明白啊,两个short相加难道加出来不是short么?
...全文
200 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
WinterFall 2012-06-15
  • 打赏
  • 举报
回复
右边会成为int类型,要想不强制转换
s += s;
shenhua 2012-06-14
  • 打赏
  • 举报
回复
在运算的时候除字符串类型外都要想强制装换的。
digest 2012-06-14
  • 打赏
  • 举报
回复
在对2个操作数进行2原操作前,需要先把他们转化成相同的类型:
若他们中有一个double,则另一个转换为double
否则,若他们中有一个float,则另一个转换为float
否则,若他们中有一个long,则另一个转换为long
否则,两个操作数都转换为int。
可以理解为:他们的权限double > float > long > int > 其他一切类型
  • 打赏
  • 举报
回复
在short做运算时,会先转换成int类型。所以要强制类型转换。
小小X 2012-05-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
short s = 0;
s = s + s;

第二句会提示让强制转换成short,不明白啊,两个short相加难道加出来不是short么?
[/Quote]
是先把short转换成int再加的,结果是int类型!
xlhb 2012-05-27
  • 打赏
  • 举报
回复
进行算术运算(加、减、乘、除、取余以及符号运算)时,不同类型数招必须转换成同 一类型的数据才能运算,算术转换原则为:

整型提升:对于所有比int小的类型,包括char, signed char, unsigned char, short, unsigned short,首先会提升为int类型。
xlhb 2012-05-27
  • 打赏
  • 举报
回复
存在从 short 到 int、long、float、double 或 decimal 的预定义隐式转换。

不能将存储大小更大的非文本数值类型隐式转换为 short(有关整型的存储大小的信息,请参见 整型表(C# 参考))。例如,请看以下两个 short 变量 x 和 y:

short x = 5, y = 12;


以下赋值语句将产生一个编译错误,原因是赋值运算符右侧的算术表达式在默认情况下的计算结果为 int 类型。

short z = x + y; // Error: no conversion from int to short

若要解决此问题,请使用强制转换:

short z = ( short )(x + y); // OK: explicit conversion

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧