代码之家  ›  专栏  ›  技术社区  ›  masoud ramezani

我们什么时候必须使用C中的检查运算符?

  •  14
  • masoud ramezani  · 技术社区  · 15 年前

    我们什么时候用 checked C中的算符?
    它是否只适用于异常处理?

    4 回复  |  直到 7 年前
        1
  •  14
  •   Henk Holterman    15 年前

    你会使用 checked 防止表达式中出现(无声)溢出。
    和使用 unchecked 当你知道一个无害的溢出可能发生。

    在不希望依赖默认(项目范围)编译器设置的地方都可以使用这两种方法。

    这两种形式都很少见,但在进行临界整数运算时,有必要考虑可能发生的溢出。

    还要注意,它们有两种形式:

     x = unchecked(x + 1);    // ( expression )
     unchecked { x = x + 1;}  // { statement(s) }
    
        2
  •  6
  •   shA.t Rami Jamleh    7 年前

    checked 帮你接电话 System.OverFlowException 否则会被忽视

    int result = checked (1000000 * 10000000);   
        // Error: operation > overflows at compile time
    
    int result = unchecked (1000000 * 10000000);  
        // No problems, compiles fine
    
        3
  •  3
  •   Adriaan Stander    15 年前

    The checked and unchecked operators

    选中和未选中的运算符 用于控制溢出 正在检查整型的上下文 算术运算和转换。

    在选中的上下文中,如果表达式 生成一个不在 目标类型的范围, 结果取决于 表达式是常量或 非常量。常量表达式 导致编译时错误,而 计算非常量表达式 在运行时并引发异常。

    在未选中的上下文中,如果 表达式生成的值为 在目的地范围之外 类型,结果将被截断。

    checked , unchecked

        4
  •  3
  •   shA.t Rami Jamleh    7 年前

    checked VS unchecked 在进行整数计算时也很有用。尤其是增量操作,你知道你会增加过去 UInt32.MaxValue 希望它无害地溢回到 0 .