发布网友 发布时间: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)。热心网友 时间: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类型的,需要强制类型转换。第二个正确