Java-Short类型不溢出的问题

求教各位以下程序

 public static void main(String args[])
 {
 short ShortMax = Short.MAX_VALUE;
 short a =1;
 System.out.println("Maximum of Short Is = "+ ShortMax+a);
}

输出结果是327671

public static void main(String args[])
 {
 short ShortMax = Short.MAX_VALUE;
 short a =1;
 System.out.println(ShortMax+a);
}

输出结果是32768

想问下以上两例为什么不会出现溢出?

0

2个回答

short b = ShortMax+a 就会溢出了。在System.out.println里,ShortMax+a 的结果并没有被指定为short,它自动转换为了int(在idea里ShortMax+a自动就被识别为int了,赋值给short b直接就报错了。还发现,short a = 1;short b = 2; short c = a+b;也直接报错,错误是不能把int赋值给short... 两个short相加的结果默认就是int ? ... )

1

ShortMax+a
会自动转换成int
(short)(ShortMax+a)

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JAVA中整数类型数据溢出问题研究
Java中的数值类型都是有符号类型,最高位表示符号位。这里我们以byte类型为例,探讨整型的数据溢出问题。nn基本数据类型 对应的包装类 所占bit位 取值范围nbyte Byte n8 -2^7 ~ 2^7-1nshort Short n16 -2^15 ~ 2^15-1nint Integer n32 -2^31 ~ 2^31-1nlong Long n64 -2^63 ~
int类型 计算时溢出问题!
在java中nn代码  nnn //不满一小时舍去 有效期n int days = (int) ((expiredTime.getTime() - date.getTime()) / (1000 * 3600));nn数据的溢出:nn当整数的数据大小超出了可以表示的范围,而程序中又没有做数值范围的检查时,nn这个整型变量所输出的值将发生紊乱,且不是预期的运行结果。nn01 //  整数值如...
java中Long类型溢出引发的思考
long var = 数字常量(数字常量大于等于2^31),实际上,此时的var 的值为溢出后的值; n溢出之后会变为负值和预期作不符。 n并且编译器不报错,但是结果和预期不符。 n在检查bug过程中 要注意所赋值不能超过该变量自身的最大值,其他类型也是如此。n byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) n short的取值范围为-32768~3276
关于char的溢出问题
现在看下面的问题int main()n{n char number = 129; n printf(“number=%d\n”, number);n return 0;n}结果为什么是-127?int main()n{n char number = -129; n printf(“number=%d\n”, number);n return 0;n}结果为什么是1
队列学习(2)
1、       在链队列中,即使不设置尾指针也能进行入队操作。n分析:使用不设置尾指针的链表作为链队列的存储结构,在进行入队操作的时候需要遍历整个链队列至队尾,然后再进行插入。这是可行的,但是效率下降。n如果只使用一个指针又要保持效率的话,可以使用只带尾指针的循环单链表作为存储结构,这样出队和入队的开销都是O(1).n2、       设循环队列存储空间Q(1:35),初始状态为front
Java左右移位操作和数据类型转换时的溢出问题
一、Java的左右移位操作rn将10进制转化为2进制进行移位操作,例:rn int i=10>>2;n System.out.println(i); 结果为1;即将1010(2进制)向右移位3次,空位由0填充,变为0001(2进制),转为十进制为1rn注:溢出的部分不再考虑  可以将右移位操作看做整除操作,结果取整数,如10>>2等价于10/2^3=1rn二、数据转换时的溢出问题rn将大范围数据类
求阶乘(防止溢出)的方法
思想是用整形数组来存储阶乘结果,每个数组内存储1位数字,下面的图比较能说明问题。rnrnrn代码如下,以12作为测试用例,对最高位做了单独处理。(中间有关除10还是模10的问题要理清楚,不然容易出错)rnpublic class Main {rn public static void main(String[] args){n int a=12;n jiechen
关于byte的溢出问题
public class Test45{n public static void main(String[] args){n byte b = (byte) (123+123);n System.out.println(b);n }n}n这是上题的答案: n首先看到老师布置这一道题的时候感觉到很奇怪,为什么编译器不会报错,虽然我到现在也不明白…… n但还是谈一
javaScript:盒模型、float浮动溢出的常见解决方法包括浏览器兼容问题对策
盒模型:包含有外边距margin 和内边距padding 边框border和内容element盒子的宽/高=margin*2+padding*2+border*2+element也就是一个模型的总长度是所有的边距加盒子边框的粗度和元素本体的宽高margin的方法:margin-top        margin-right        margin-bottom        margin-le...
时间溢出异常
时间溢出异常!nn造成此异常的原因是:在数据库中的对应时间的字段是自动获取的,不可更新列,而在前台程序中添加了时间,造成时间溢出。nn解决办法:除去前台添加时间的代码。或者将数据库中的时间字段设置成非自动获取。...
uchar类型图像像素灰度溢出
n int temp = -256;n dst1.data[10] = temp;n int a = dst1.data[10];n cout << int(dst1.data[10]) << " " << a << endl;nn//result:n// 0 0n////////////////////////////////////...
加法考虑溢出的问题
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)既然这里提示不超过长整形那么就要考虑结果是否是int。int Sum( int n )n{n return ( (long)1 + n) * n / 2; //或return (1l + n) * n / 2;n}这里将1进行转换,转换为长整形。所以后面都会转换为long。...
数值类型 注意溢出的情况
int基本数据类型的最大范围(2147483647)int i = 1000000;System.out.println(i*i);------------------------727379968   i设置为1000000,在乘方时Java发现结果(1000000000000)已经超出了int基本数据类型的最大范围(2147483647),于是作了默认的类型提升(type promotion)
java——强制类型转换数据溢出的结果计算
强制类型转换数据溢出计算:n在开发中我们经常会遇到数据溢出问题,那么问题来了,溢出得到的结果是怎么计算的呢??n小贴士:我们知道计算机中的数据以字节的形式存储,一个字节又分出8位地址空间,用来存储1和0二进制数据。n我们在计算机上看到的其实是其原码形式,计算机是以二进制数的补码进行处理运算的。nok就说得到这,下面来个案例说明问题!!!nbyte a = (byte)130;nn nn nn我们知...
C语言溢出问题
由于在计算机中整型数是由补码来表示的,所以当数据规模太大时会造成溢出错误C语言在头文件limits.h中给出了相关宏定义,以下是溢出情况的演示,UINT_MAX是无符号最大值...
数据类型之char型溢出的讨论。
数据类型:rnrnrnrnrnrnrn1.内置类型(C本身): 整形,浮点型,字符型。rn2.构造类型(自定义类型):数组,结构体,枚举。rn3.指针类型。rn4.空类型。rn头文件limis.h定义了不同的整形类型。rn二.字符型。rn主要分为char,unsiged char 和signed char型。rn如何判断三个类型的大小呢,一般情况用关键字sizeof来求其类型的长度。如:rn#de
java解决小数浮点问题
n import java.math.BigDecimal;nnn/**n * @desc:n * @Author: Yongkang Houn * @Date: 2018/8/2n */npublic class BigDecimalOf {nn public static void main(String[] args) {n Double d1=5.21;n ...
解决GetTickCount长期不关机时间溢出问题
有些监控等系统需要长期不关机运行,用GetTickCount获取时间片会出现溢出问题,即连续运行49.71天后这个函数获取出来的值就从0开始,导致系统出现故障。此代码解决了这个问题,实际运用正常!
short—溢出问题
代码概述:rn * 1、定义两个short型值n和m,并赋初值(范围:-128~127)rn * 2、再定义一个short型值sum=n加m;rn * 3、执行 2 的操作时,程序会报错:rn * --因为两个short值相加可能会越界,因此此处要进行强制类型转换成short型rn */rnrnrn代码Demo:rnpackage common;nnimport java.util.Scanner
int整数相乘溢出
我们计算一天中的微秒数: nlong microsPerDay = 24 * 60 * 60 * 1000 * 1000;// 正确结果应为:86400000000 nSystem.out.println(microsPerDay);// 实际上为:500654080 问题在于计算过程中溢出了。这个计算式完全是以int运算来执行的,并且只有在运算完成之后,其结果才被提升为long,而此时已经
大数计算器,用计算机实现以整形、浮点型等类型进行数据计算溢出的问题
大数计算器,用计算机实现以整形、浮点型等类型进行数据计算溢出的问题
一劳永逸地理解逻辑移位和算术移位问题——与有无符号数_数据溢出_可移植性问题
本文详细描述了数据移位的问题:包括逻辑移位和算术移位的区别,有符号数和无符号数移位的区别,不同编译器下的移植性问题所在,数据左移时候可能产生的bug等。总结了几条有用的经验,提供了可验证的源代码。可直接在任意平台下实验。
关于C++ int中溢出显示错误的底层原理
在C++中关于无符号unsigned int类型的溢出,不同的计算对于int的字节长度也不一样rn我的计算int长度为4个字节。rn可使用:sizeof(int)来查看rnrnrnrnrn那无符号unsigned int最大显示值:0~4的16次方-1,也就是4294967295,如果int的值大于4294967295将会造成溢出,请看下图rnrnrn上图就是超出了int的值表示范围,造成了数据溢
算法实现求n的阶乘(防止溢出)
求大整数n阶乘,在找工作笔试和面试的过程中,不止一次遇到这个问题,用一个for循环迭代出的结果肯定是不行的,即直接用int,默认是32位,它能表示的最大值为2,147,483,647,但是12的阶乘为479,001,600,13的阶乘为6,227,020,800,所以当n为13的时候已经溢出了。所以当n为更大的值时,需要采用巧妙的方法来防止溢出。n我们可以用数组的方式来存储每一位数据。n具体代
C#类型转换时的溢出检查
当显 地把一种数据类型转换为另一种数据类型时,为了避免溢出,通常有两种方法。nn1、为表达式设置溢出检查上下文,就是用关键词checked和unchecked。按照下述方式:nnchecked(表达式)nunchecked(表达式)nn               nps.我很郁闷为什么e x p r e s s i o n是非法字符呢,无奈写成表达式。。。n n示例:nn        nbyt
数据类型溢出
在开发游戏的过程中遇到了成就统计溢出的问题,情况是统计获取金币的时候,对于一个玩家来说获取金币是无上限的,但是在程序里面使用的是Integer类型,所以会存在上限,一旦超过Integer上限,就会报错.rn public void addNum(int num){rn        totalNum += num;rn }rnrn这样的代码很明显到了后期,玩家金币数目获取过多就会报错.rn我采用了
c问题---关于数组溢出的思考
逛CSDN看到这么一个问题:rnc问题---关于数组溢出的思考rn今天在做题时,发现定义整型数组a[10],并赋初值,然后我访问a[11],输出0,再a[11]=3后访问a[11],输出3,a的长度还是10,那么a[11]存在哪里了?rn原问题见:http://ask.csdn.net/questions/234444  提问:hehajoker rn其实原问题下的回答已经能解决题主的问题了,只是
java 中 long 类型越界的处理
rn rn public static String longToUnsigned(long signed) {rn if (signed < 0L) {rn BigInteger unsigned = BigInteger.valueOf(signed & Long.MAX_VALUE);rn return unsig...
php强制Int类型 超出I32进行溢出
pack, 强制类型溢出, int32
html 内联类型容器中文本溢出部分隐藏
css部分rnrnrn.smTextTitle{rnwidth:70px;rnoverflow:hidden;rnwhite-space:nowrap;rntext-overflow:ellipsis;rnrndisplay: inline-block; //将对象呈现为inline形式,但对象的内容作为block形式呈现,也就是说披着“inline”皮的“block”rn}rnrnrnhtml部
解决字符串不换行溢出问题【css实现强制换行】
n n n css文字强制换行的方法,用word-wrap属性n在默认情况下,如果文本的内容超过某个div块的宽度的话,就会发生自动换行,因为div块的white-space属性的默认值是normal。但是也有两种情况:n  1、如果div块里是一串的文字内容,那么到了div块的width限制时,会自动换行。nn  2、如果div块里一串没有空格的字母或者数字的时候是那就不换行了,而是...
【LeetCode】检查一个10位数组,是否溢出int类型的数据
检查一个10位数组,是否溢出int类型的数据3种方法:1.检查后9位2.检查前9位3.用long类型计算结果 然后比较n //检验10位大小溢出问题n //法1:int类型,n //判断 后9位 ? INT_MAX的后9位n //len>10 溢出n //len==10, 最高位>2时,溢出n 最高位==2时,正数resu...
snprintf函数越界分析
1定义:int snprintf(char *restrict buf, size_t n, const char * restrict  format, ...);rn2函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。rn3函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。rn4例程:rnint main()n{n
小算法,关于阶乘数字过大溢出的解决办法
思路:假设372为一个大数字,18为一个普通int型数字rnrnrn代码如下:rnpublic class Demo01 {rn//求一个数的阶乘,当求一个很大的数的阶乘,会造成数据溢出rn//解决办法:让数组解决rnrnpublic static void main(String[] args) {rnint[] arr=new int[100];rn    arr[arr.length-1]=
C语言剖析各个数据类型的范围,整数溢出及转换
基础为上一篇博客的的原码反码补码------------首先附上各个数据类型的大小:类型前还可以加上long , short 等修饰符先不讨论用char来举例子:一篇大神对char范围分析的博客整数溢出计算一个整数的时候超过整数能够容纳的最大单位后,整数会溢出,溢出的结果是高位舍弃short 的最大为 0xffff 如果在加1原来abc 为 1111 1111 1111 1111  加1后成了 1...
iOS在json解析中出现的类似小数溢出的问题
json解析出现的小数溢出问题
判断C++中int类型数据是否溢出
n如题:判断int类型的溢出问题?nnnOne:是不是首先想到了查看int类型的数值范围:假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31,  2^31 − 1]。nn但是,这样真的可能吗?nnnvoid test(){ n int a = 964632435;n a = a * 10;n cout<<a<<endl;//1056389758n}nn实...
java 两数求平均值 防溢出问题
java中求两个数的平均值,怎样防溢出?n两数求名均值,大多数人可能会写成下面形式npublic static int mean(int a, int b){n return (a + b) / 2;n}nn稍微优化一下可以写成下面的形式npublic static int mean(int a, int b){n return (a + b) >> 1;n}nn还可能写成...
gets(s)存在的溢出漏洞问题
scanf遇到输出不能有空格,所以用gets输入字符串,但是gets出现了一个潜在问题,gets将不停地往s中塞东西,不管s的可用空间是否足够,就存在溢出漏洞问题rn解决方案可以用fgets代替,rn不如说char s[100],buf[100]; fgets(buf,sizeof(s),stdin);n while(fgets(buf,sizeof(buf),stdin)//循环输入
解决求很大数阶层时数据溢出的两种方法
1.代码rnpackage test;rn rnimport java.util.*;rnimport java.io.IOException;rn public class Test5{rn rn public void Transport(long n){rn   int s=1;rn   for(int i=1;irn   s*=i;rn   System.out.println(n+"!的
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链问题 区块链类型