先测试,看结果:

提示我们说不能将short类型的转化为int类型!

先不急着下结论,我们继续测试,用i+=1;

我们发现并没有报错,为什么同样是加1,会出现这样两种不同的结果呢?

查阅了一些资料,大多数都说明都是整数默认为int型,所以不能i+1后,会隐式转化成int型,但是为什么short i=1;就可以进行转换呢?

这样的说法很难服众,不严谨,

进一步测试,输出这个过程中它们的类型:

我们发现,i+1的类型是int型,i=1和i+=i后的类型还是short型,

这个时候我们发现这三个有一些不同的方法了,=与+=是赋值运算符,+是算数运算符

算数运算符

赋值运算符

结论:

这个与运算符的类型有关,只要是发生了算数运算,此时就会把结果转化为int。
是由于开发者考虑到,人们在计算的时候,大多会忽略取值这个范围
所以为了简化底层逻辑,开发者设计,当没有任何关键字的时候,当接收到了
 byte、short、char这些数据类型,进行数学运算时,会在这个过程中
 将其转化为int类型!

扩展测试:

字符‘a’的unicode码为97,

97+1+2=100,显然没有超出short的取值范围,所以不应该是因为超出范围进行了数据类型的转换,

此时我们就理解成,因为字符型的转换,这个过程成了int,那么我们去除char字符,再进行测试:

我们发现还是报错了!

综上所述,我们前面提到的结论成立!

short i=1;i=i+1;为什么报错?的更多相关文章

  1. 关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?

    package common; public class ShortTypeTest { /* * @param args */ public static void main(String[] ar ...

  2. 转!!Java 基础面试题的剖析: short s1=1;s1 = s1 +1 报错? s1+=1 呢

    short s1=1;s1 = s1 +1会报错吗?    package common; public class ShortTypeTest { /* * @param args */ publi ...

  3. Microsoft.AspNetCore.Identity 使用 mysql 报错处理

    1.使用mysql 首先要确定mysql connector 支的版本,正面是链接 https://dev.mysql.com/doc/connector-net/en/connector-net-e ...

  4. IDE Goland DEBUG报错(could not launch process: decoding dwarf section info at offset 0x0: too short)

    背景: 在升级GO版本到1.11后发现Goland的Debug报错,如下:could not launch process: decoding dwarf section info at offset ...

  5. 16061701(地图灯光编译Beast报错)

    [目标] 地图灯光编译报错 [思路] 1 我自己测c2_cwd_rt 附件为当时log 2 ExampleGame\BeastCache\PersistentCache 3 重新删除掉BeastCac ...

  6. Github上LeakCanary编译报错CreateProcess error=2的解决方法

    现象说明: 从github上拉下LeakCanary编译时报错 CreateProcess error=2, ϵͳÕҲ»µ½ָ¶ 原因分析: 该现象是由于Windows中Gradle调用命令未加cmd ...

  7. 为什么java局部变量没有初始化就会报错,而成员变量没有初始化就不会报错?

    代码如下 1.局部变量,报错!!! public void test(){ int i; System.out.println(i); } 2.成员变量,输出0 int i; @Test public ...

  8. VC下ffmpeg例程调试报错处理

    tools/options/directories/include files  添加ffmpeg头文件所在路径 tools/options/directories/library files  添加 ...

  9. 报错:System.NotSupportedException: LINQ to Entities does not recognize the method

    报错:System.NotSupportedException: LINQ to Entities does not recognize the method ...... get_Item(Int3 ...

随机推荐

  1. WPF 之 INotifyPropertyChanged 接口的使用 (一)

    一.INotifyPropertyChanged 的基本概念 ​ INotifyPropertyChanged 的作用:通知客户端属性值已经更改.详细信息见:INotifyPropertyChange ...

  2. AYIT-2020 609暑假集训第一周周赛题 A - A计划

    可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老.年迈的国王正是心急如焚,告招天下 ...

  3. AtCoder Beginner Contest 168

    比赛链接:https://atcoder.jp/contests/abc168/tasks A - ∴ (Therefore) 题意 给出一个由数字组成的字符串 $s$,要求如下: 如果 $s$ 以 ...

  4. hdu 1166 敌兵布阵 线段树区间修改、查询、单点修改 板子题

    题目链接:敌兵布阵 题目: C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视 ...

  5. Chapter Zero 0.1.4 计算机上常用的计算单位

    0.1 计算机硬件 计算机上常用的计算单位 容量单位: 计算机对于数据的判断依据有没有通电来记录信息,对于每个记录而言, 他只认识0或1,而0/1这个二进制单位我们成为bit. 因为bit太小,所以存 ...

  6. HDU - 4462 Scaring the Birds

    It's harvest season now! Farmer John plants a lot of corn. There are many birds living around his co ...

  7. Leetcode(18)-四数之和

    给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满 ...

  8. C++中函数的形式参数引用

    形式参数的传递方式 值传递 值传递是将数值传递到程序中,这种方式传递是单向传递 但是如果想要双向传递,这种视频无法满足: 引用传递 引用传递可以实现双向的传递 为了对比处两个之间的差异,这里举出两个例 ...

  9. sqli-libs(7) bool盲注

    首先打开网页后,发现页面显示outfile,  对不起,看不懂,  就直接加 ' 发现报错了 后来,查看源码得知 他是两个括号括起来的 我们就可以构造我们的payload了, 首先查询当前数据库的长度 ...

  10. 使用 js 实现十大排序算法: 桶排序

    使用 js 实现十大排序算法: 桶排序 桶排序 refs xgqfrms 2012-2020 www.cnblogs.com 发布文章使用:只允许注册用户才可以访问!