将长/十进制显式转换为int
本文关键字:int 显式转换 十进制 将长 | 更新日期: 2023-09-27 18:23:57
考虑以下代码:
long longMaxValue = long.MaxValue;
decimal decimalMaxValue = decimal.MaxValue;
int a = (int)longMaxValue;
int b = (int)decimalMaxValue;
问题1:为什么将longMaxValue
强制转换为int
会导致-1?
问题2:为什么将decimalMaxValue
转换为int
会导致以下异常,而将longMaxValue
转换为int
则不会?
值对于Int32来说太大或太小。
-
因为CCD_ 7是二进制的0111111…1111;这里的铸造基本上将其减少到最后(最低有效)32位,所有这些位都是1;二进制111…111是:-1
-
整数运算在C#中默认为
unchecked
。添加checked
,或者将编译器更改为默认检查,则会导致错误