将长/十进制显式转换为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来说太大或太小。

将长/十进制显式转换为int

  1. 因为CCD_ 7是二进制的0111111…1111;这里的铸造基本上将其减少到最后(最低有效)32位,所有这些位都是1;二进制111…111是:-1

  2. 整数运算在C#中默认为unchecked。添加checked,或者将编译器更改为默认检查,则会导致错误

相关文章: