关于C#中的两个short类型相加变成了int类型
来源:互联网 发布:淘宝七了个三什么梗 编辑:程序博客网 时间:2024/06/14 03:39
题目:short s1 = 1; s1 = s1 + 1;有什么错; short s1 = 1; s1 += 1; 有什么错?
网上一般的回答是:s1 = s1 + 1; 中的s1 + 1 为int类型,所以不能隐式转换成int类型,所以出错。
疑问一 :s1 + 1 (一个short类型加一个int类型,为什么会隐式转成int类型)?
解答:这其实是C#的一个特性。它会把byte、short等类型的数据进行四则运算后的结果设置为int类型,为的就是提醒用户这些数运算结果可能会溢出,所以要求用户进行一次强制类型转换。
解决方案:将s1 + 1 显示转成short类型即可,如:s1 = (short)(s1 + 1);
疑问二 :为什么后面一句的s1 += 1;正确?
解答:因为前面的s1 + 1为简单赋值运算,而后面的s1 += 1 为复合赋值运算,而复合赋值运算与简单赋值运算的区别在于复合赋值运算会将运算结果隐式转化成运算符左边的类型。 即将s1 += 1 的结果转成s1的类型,而s1为short类型,所以正确。。
0 0
- 学习笔记——关于C#中的两个short类型相加变成了int类型
- 关于C#中的两个short类型相加变成了int类型
- 关于C/C++中的short类型
- int short型类型转换
- 关于short 类型
- java中,数值计算时的类型转换 ( 两个int类型相加,赋值给double )
- 1.1两个char类型数据相加后,转化为int类型
- String类型的字符串变成int类型。
- java-int&short-byte类型转换问题
- int、short、char 类型超出范围赋值
- short 和 int 类型的转换
- int? C#中的可空类型
- C++定义中short int long类型的变量分别占用了几个字节的存储空间
- short、int、char类型组合成long类型
- char类型和short,int类型之类的转换
- java中short类型自动转int类型注意事项
- 判断两个int类型的整数相加,相减是否溢出的C语言代码
- c语言指针与int类型相加
- 索引组织表和普通表
- UVA 10529 - Dumb Bones(概率+区间dp)
- Mac环境下Nginx+PHP+MySQL的安装与配置
- HDOJ题目2529shot(数学)
- Android高手进阶教程(四)之----Android 中自定义属性(attr.xml,TypedArray)的使用!
- 关于C#中的两个short类型相加变成了int类型
- CSDN博文精选:Android系列开发博客资源汇总
- ref和out的作用和区别
- Scala新手指南中文版 -第十一篇 Currying and partially applied functions(科里化和部分应用函数)
- 【Django】第一个Django程序
- “Invalid place to record expectations”的解决方案
- Oracle笔记之 用户管理
- BOJ 482. 焦级长的激光炮
- 网络硬盘