gpt4 book ai didi

C# 将两个值 int.MaxValue 的变量相乘不会导致 OverflowException

转载 作者:行者123 更新时间:2023-11-30 13:38:18 31 4
gpt4 key购买 nike

我有一个包含两个值的整数数组,每个值都是 int32 的最大值:

int[] factors = new int[] { 2147483647, 2147483647 };

我正在尝试获取这两个数字的乘积以创建一个 OverflowException:

try
{
int product = factors[0] * factors [1];
}
catch(Exception ex)
{
}

令我惊讶(和沮丧)的是,product 实际上返回值 1。这是为什么,当两个整数的乘积超过 int.MaxValue 时我将如何抛出异常?

最佳答案

因为C#的默认行为是不检查int溢出的。但是,您可以使用 checked 强制进行溢出检查。关键字。

try
{
checked
{
int product = factors[0] * factors [1];
}
}
catch(Exception ex)
{
}

关于C# 将两个值 int.MaxValue 的变量相乘不会导致 OverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17775846/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com