short s1=1;s1=s1+1;为什么是错的.而s1+=1;为什么不报错

本文探讨了在.NET框架中,short类型变量进行加法运算时遇到的数据类型转换问题。解释了为什么直接相加会导致错误,而使用复合赋值运算符(如+=)则可以正常工作的原因,并通过反编译代码来揭示其背后的机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. short s1=1;s1=s1+1;为什么是错的

在进行算法运算的时候,内部CLR的虚拟机只能进行最低32位的运算 也就是int
所以不管你是short+short 还是byte+short 最终都会被提升扩展成Int32 也就是int
也就是说s1+1最后是int型 但左边是s1是short型  很明显一桶水倒到一杯水里会造成数据丢失 所以是错的  

你必须要显示转换才可以


2.s1+=1;为什么不报错
关于这个+=我以前也是一直认为和x=x+1是等效的 其实还是有区别的
最好的证据就是看反编译后的代码啦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值