C#中++运算符的一致行为

时间:2015-10-06 19:36:45

标签: c# increment integer-overflow

应用于++时,应用于C#中的long的long.MaxValue运算符的行为是否一致?该调用不是在checked块内进行的。我需要知道在任何情况下,现在或未来它是否可能抛出OverflowException而不是包裹到long.MinValue

2 个答案:

答案 0 :(得分:8)

即使您不在checked块内,如果在Visual Studio中使用“检查算术溢出/下溢”编译项目(或使用/checked C#编译器开关),那么默认情况下,您的所有代码都会像在checked块中一样运行。所以在这种情况下你绝对可以获得溢出异常。

答案 1 :(得分:2)

来自C#语言规范:

  

对于未由任何已检查或未检查的运算符或语句包含的非常量表达式(在运行时计算的表达式),除非外部因素(例如编译器开关和执行环境配置),否则将取消选中默认溢出检查上下文)要求进行检查评估。