gpt4 book ai didi

c# - 为什么这不会产生溢出异常?

转载 作者:太空狗 更新时间:2023-10-29 22:23:27 25 4
gpt4 key购买 nike

我正在使用 LinqPad 测试一些东西,令我惊讶的是以下代码没有产生异常:

ulong lSmallValue = 5;
ulong lBigValue = 10;

ulong lDifference = lSmallValue - lBigValue;

Console.WriteLine(lDifference);
Console.WriteLine((long)lDifference);

这会产生以下输出:

18446744073709551611
-5

幸运的是,我希望有这种行为,但我假设这会导致抛出 OverflowException

来自 System.OverflowException :

An OverflowException is thrown at run time under the following conditions:

  • An arithmetic operation produces a result that is outside the range of the data type returned by the operation.
  • A casting or conversion operation attempts to perform a narrowing conversion, and the value of the source data type is outside the range of the target data type.

为什么 lSmallValue - lBigValue 操作不属于第一类?

最佳答案

CLR默认不会抛出Overflow异常。除非您使用“checked”关键字。

http://msdn.microsoft.com/en-us/library/74b4xzyw%28v=vs.71%29.aspx

UPD:实际上,我确实推荐 Jeffrey Richter 的“CLR via C#”——他使这些事情变得更加透明。我最喜欢的关于 CLR 和 C# 基础知识的书。

关于c# - 为什么这不会产生溢出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12571454/

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