Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取算术溢出的最大值_C#_Integer Overflow_Arithmetic Expressions_Integer Arithmetic_Overflowexception - Fatal编程技术网

C# 获取算术溢出的最大值

C# 获取算术溢出的最大值,c#,integer-overflow,arithmetic-expressions,integer-arithmetic,overflowexception,C#,Integer Overflow,Arithmetic Expressions,Integer Arithmetic,Overflowexception,是否有一种内置的方法来获取算术溢出的最大值 我需要的是: var val = byte.MaxValue + 1; //should be rounded down to byte.MaxValue MyByteProperty = val; 另外,我知道我可以通过将其包装为一个checked表达式来实现这一点,我的问题是该语言或BCL中是否有内置方式。有checked和unchecked关键字,它们指示在发生溢出时是否会引发异常: try { MyByteProperty = ch

是否有一种内置的方法来获取算术溢出的最大值

我需要的是:

var val = byte.MaxValue + 1;

//should be rounded down to byte.MaxValue
MyByteProperty = val;

另外,我知道我可以通过将其包装为一个
checked
表达式来实现这一点,我的问题是该语言或BCL中是否有内置方式。

checked
unchecked
关键字,它们指示在发生溢出时是否会引发异常:

try
{
    MyByteProperty = checked(byte.MaxValue + 1);
}
catch (System.OverflowException e)
{
    MyByteProperty = byte.MaxValue;
}

我认为您正在寻找所谓的“饱和加法”。您正在寻找的是所谓的饱和算术,并且对于内置类型和运算符不可用,因为这将与程序员期望这些行为的方式相冲突。我知道这一点。我的问题是,是否有一种内置的方式可以做到这一点。这种内置方式还不够吗?@patrickhoffman举例来说,这种构造可以说比例如
MyByteProperty=val>byte.MaxValue要详细得多?byte.MaxValue:val
,但即使您必须手动执行每个赋值/计算,而不是内置的(我认为不存在)。