问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

发布网友 发布时间:2022-04-30 03:15

我来回答

5个回答

热心网友 时间:2023-10-09 10:14

赋值表达式等号两侧的转换的规则是右侧的向左侧的看齐,即右侧表达式要转换到和左边的类型一样。short s1 = 1; s1 = s1 + 1;错! s1 + 1,s1是short类型,1是int型,s1会自动转换为int型的1,与1相加后,得到int型的2,要向左侧的short类型的s1看齐,即需要通过强制类型转换。正确写法:s1 = (short) (s1 + 1);

short s1 = 1; s1 += 1;正确! 执行s1+=1;其实执行的是s1 = (short) (s1 + 1); 其中会有一个强制转换的过程。

正确的写法是:short s1=1;s1=(short)(s1+1); 或者 short s1=1;s1+=1;

拓展资料

长整型 是 long int, 内存长度用4字节(32 位二进制)。短整型 是 short int, 内存长度用2字节(16 位二进制)
int 型 默认 为 long int。(但国内还有人使用的古老的TC编译器int 型 默认 为 short int);
应用上:能表示的数值范围不同。 long int 比 short int 范围大。而 short int 的优点 是节省 内存单元。其它没什么不同。

长整型 取值范围在[-2147483648,2147483648]。无符号长整型 也就是没有负号的长整型 取值范围在 [0,4294967259]。短整型 取值范围在[-32768,32768]。无符号短整型 取值范围在[0,65535]

参考资料

c语言——百度百科

热心网友 时间:2023-10-09 10:14

前面一句中,s1 = s1 + 1需要进行强转,写成s1 = (short)(s1 + 1)。
后面一句没错。
1、Java规范有这样的规则
[
a.高位转低位需要强制转换
b.低位转高位自动转.
]
2、short s1 = 1; s1 = s1 + 1;中,1 是int 型 s1 short型 通过 + 运算后s1 自动转为int 型 所以错!
3、后面一句没有错是因为Java语言规范中讲到,复合赋值(E1 op=E2)等价于简单赋值(E1=(T)((E1) op (E2))),而(s1 += 1)表达式使用的是复合赋值操作符,复合赋值表达式自动地将所执行计算的结果转型为其左侧变量的类型。如果结果的类型与该变量的类型相同,那么这个转型不会造成任何影响。

热心网友 时间:2023-10-09 10:14

对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

热心网友 时间:2023-10-09 10:15

分析如下:

1、对于short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。

2、对于short s1 = 1; s1 += 1;由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。

3、s1是short型,1是int型,所以两个加完后是类型加大的那个是int,但是s1=s1+1;赋值的时候,s1是short型,不能将int型隐式转换成short。

拓展资料

Java语言特点

1.简单性

Java看起来设计得很像C++,但是为了使语言小和容易熟悉,设计者们把C++语言中许多可用的特征去掉了,这些特征是一般程序员很少使用的。例如,Java不支持go to语句,代之以提供break和continue语句以及异常处理。Java还剔除了C++的操作符过载(overload)和多继承特征,并且不使用主文件,免去了预处理程序。因为Java没有结构,数组和串都是对象,所以不需要指针。Java能够自动处理对象的引用和间接引用,实现自动的无用单元收集,使用户不必为存储管理问题烦恼,能更多的时间和精力花在研发上。

2.面向对象

Java是一个面向对象的语言。对程序员来说,这意味着要注意应中的数据和操纵数据的方法(method),而不是严格地用过程来思考。在一个面向对象的系统中,类(class)是数据和操作数据的方法的集合。数据和方法一起描述对象(object)的状态和行为。每一对象是其状态和行为的封装。类是按一定体系和层次安排的,使得子类可以从超类继承行为。在这个类层次体系中有一个根类,它是具有一般行为的类。Java程序是用类来组织的。

Java还包括一个类的扩展集合,分别组成各种程序包(Package),用户可以在自己的程序中使用。例如,Java提供产生图形用户接口部件的类(java.awt包),这里awt是抽象窗口工具集(abstract windowing toolkit)的缩写,处理输入输出的类(java.io包)和支持网络功能的类(java.net包)。

参考资料来源:百度百科:Java

热心网友 时间:2023-10-09 10:16

第一个有错,因为1是int类型的,需要强制类型转换。第二个正确
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
月经不尽褐色的是怎么回事 月经前后有褐色分泌物是什么原因 二十四节气的重要意义24节气在生活中的作用 你来我往,猜一个数字? 姓谭女孩起什么名字最优雅 男孩姓谭的好名字 黄家驹在beyond的地位 黄家驹是Beyond的主唱吗? 老板对员工的新年微信 每次感冒和一些小毛病,我都是选择运动出身汗,让它自然好,请问这种方 ... 求 路易不容易s1 百度云免费在线观看资源 s1代表什么 南京威孚金宁有限公司怎么样? 各位显卡大神 微星的1050TI OC版跟技嘉的1050TI G1选哪个? 无锡威孚英特迈增压技术有限公司怎么样? 无锡英特帕普威孚液压有限责任公司怎么样? RX570能吃鸡么 无锡威孚长安有限责任公司怎么样? 无锡威孚国际贸易有限公司怎么样? 让保洁用草酸洗厕所违法吗 无锡威孚高科技集团股份有限公司怎么样? 什么是无糖薄荷糖? 什么糖比较好吃? 厕所总是臭的不行用草酸刷了好几遍都不行当时不臭了过后又特别臭感觉像是腐尸的味道求解 江苏威孚锅炉有限公司怎么样? Ricola是什么意思 为什么不用草酸洗厕所? 急~~~迈克尔杰克逊~~~ 以前大家应该经常吃的一种薄荷糖叫什么的开着… 谁知道为什么草酸可以用来通厕所 无锡威孚奥特凯姆精密机械有限公司怎么样? 江苏镇江威孚锅炉厂的弘道燃气1o万大卡锅炉好吗 电脑屏出现no s1gnal 无锡威孚怎么样 S1连接不上网络 无锡威孚力达公司工资待遇和福利怎么样? S1 NO.1 STYLE官网 日本s1 no.1 style公司演员名单附带图片分不多~望高人指点! 近几年被外国收购的民族企业 说电影是s1好片是什么意思? 中央财经大学学报的no.s1是什么意思 英雄联盟s1寡妇技能 如图s1在电路中代表什么? s1普通版本的使用技巧? S1是啥意思?有几种可能呢? 谁知道欧美有个八卦论坛叫S1论坛??!!有谁知道请给个地址~非常感谢! WOW S1 问题. 校园里越来越多的学生使用手机,对学生有什么影响?总结观点并提出建议 手机对中学生到底是利大于弊还是弊大于利 学生在学校里是否需要持有手机呢?