`

C# checked、unchecked操作符

阅读更多
checked和unchecked操作符用于整型算术运算时控制当前环境中的溢出检查。下列运算参与了checked和unchecked检查(操作数均为整数):
1)  预定义的++和――一元运算符。
2)  预定义的-一元运算符。
3)  预定义的+、-、×、/等二元操作符。
4)  从一种整型到另一种整型的显示数据转换。
当上述整型运算产生一个目标类型无法表示的大数时,可以有相应的处理方式:
(一)使用checked
若运算是常量表达式,则产生编译错误:The operation overflows at complie time in checked mode.
若运算是非常量表达式,则运行时会抛出一个溢出异常:OverFlowException异常
(二)使用unchecked
无论运算是否是常量表达式,都没有编译错误或是运行时异常发生,只是返回值被截掉不符合目标类型的高位。
(三)既未使用checked又未使用unchecked
若运算是常量表达式,默认情况下总是进行溢出检查,同使用checked一样,会无法通过编译。
若运算是非常量表达式,则是否进行溢出检查,取决于外部因素,包括编译器状态、执行环境参数等。
下例说明了checked和unchecked操作符在非常量表达式中的使用方法:
class Test
{
       static int x = 1000000;
       static int y = 1000000;
       static int F()
{
       return checked(x*y);     //运行时抛出OverFlowException异常
}
static int G()
{
       return unchecked(x*y);  //截去高位部分,返回-727379968
}
static int H()
{
       return x*y;     //依赖于编译器的默认设置,一般是不检查
}
}
checked和unchecked操作符在常量表达式中的使用方法:
class Test
{
       const int x = 1000000;
       const int y = 1000000;
       static int F()
{
       return checked(x*y);     //编译错误,编译无法通过
}
static int G()
{
       return unchecked(x*y);  //截去高位部分,返回-727379968
}
static int H()
{
       return x*y;     //编译错误,编译无法通过
}
}
 
分享到:
评论

相关推荐

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    21.3 声明递增操作符和递减操作符 388 21.4 比较结构和类中的操作符 389 21.5 定义操作符对 390 21.6 实现操作符 391 21.7 理解转换操作符 397 21.7.1 提供内建转换 397 21.7.2 实现用户自定义的转换操作符 ...

    C#语言参考C#语言参考

    7.5.13 checked和unchecked操作符 117 7.6 一元表达式 119 7.6.1 一元正值运算符 119 7.6.2 一元负值运算符 119 7.6.3 逻辑非运算符 120 7.6.4 按位求补运算符 120 7.6.5 间接运算符 120 7.6.6 地址运算符 120 7.6.7...

    微软 C#语言参考 CHM格式

    7.5.13 checked和unchecked操作符.. 117 7.6 一元表达式... 119 7.6.1 一元正值运算符... 119 7.6.2 一元负值运算符... 119 7.6.3 逻辑非运算符... 120 7.6.4 按位求补运算符... 120 7.6.5 间接运算符... 120 7.6.6 ...

    C#语言参考,微软的基础教程

    7.5.13 checked和unchecked操作符 79 7.6 一元表达式 79 7.6.1 一元正值运算符 79 7.6.2 一元负值运算符 79 7.6.3 逻辑非运算符 79 7.6.4 按位求补运算符 79 7.6.5 间接运算符 79 7.6.6 地址运算符 79 7.6.7 前缀...

    轻松学C#(图解版)

    11.4 checked和unchecked关键字 214 11.4.1 checked 214 11.4.2 unchecked 214 11.5 小结 217 11.6 习题 217 第12章 文件和流 221 12.1 System.IO类 221 12.2 文件类File 222 12.2.1 文件的创建和打开 222 12.2.2 ...

    在一小时内学会 C#(txt版本)

    在一小时内学会 C#。...你可以使用 unsafe 修饰符在 C# 中定义一个不安全上下文。在不安全上下文中,你可以插入不安全代码,如 C++ 的指针等。参见以下代码: 复制内容到剪贴板 代码: public unsafe MyFunction...

    微软C#语言规范,C#语言教程中文版

    5.3.3.2 块语句、checked 和 unchecked 语句 98 5.3.3.3 表达式语句 98 5.3.3.4 声明语句 98 5.3.3.5 if 语句 98 5.3.3.6 switch 语句 99 5.3.3.7 while 语句 99 5.3.3.8 do 语句 99 5.3.3.9 for 语句 99 5.3.3.10 ...

    CLR.via.C#.(中文第3版)(自制详细书签)

    4.2.1 使用C#的is和as操作符来转型 4.3 命名空间和程序集 4.4 运行时的相互联系 第5章 基元类型、引用类型和值类型 5.1 编程语言的基元类型 5.1.1 checked和unchecked基元类型操作 5.2 引用类型和值类型 5.3 ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    4.2.1 使用C#的is和as操作符来转型 4.3 命名空间和程序集 4.4 运行时的相互联系 第5章 基元类型、引用类型和值类型 5.1 编程语言的基元类型 5.1.1 checked和unchecked基元类型操作 5.2 引用类型和值类型 5.3...

    C#教程(语言规范)

    5.3.3.2 块语句、checked 和 unchecked 语句 . 89 5.3.3.3 表达式语句 . 89 5.3.3.4 声明语句 ... 90 5.3.3.5 if 语句.. 90 5.3.3.6 switch 语句. 90 5.3.3.7 while 语句 ... 90 5.3.3.8 do 语句 . 90 5.3....

    c#学习笔记.txt

    Checked 和 Uncheckedchecked, unchecked fixed 语句Fixed lock 语句Lock (1) foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组。foreach 语句用于循环访问集合以获取所需信息,但不应用于更改集合内容...

    C#语言规范(2.0,3.0,4.0合集)

    5.3.3.2 块语句、checked 和 unchecked 语句 98 5.3.3.3 表达式语句 98 5.3.3.4 声明语句 98 5.3.3.5 if 语句 98 5.3.3.6 switch 语句 99 5.3.3.7 while 语句 99 5.3.3.8 do 语句 99 5.3.3.9 for 语句 99 5.3.3.10 ...

    C# for CSDN 乱七八糟的看不懂

    C#关键字 关键字 abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach ...

    C# 使用方法 入门教程

    5.1.3 checked和unchecked运算符..... 122 5.1.4 is运算符..... 123 5.1.5 as运算符..... 123 5.1.6 sizeof运算符..... 123 5.1.7 typeof运算符..... 124 5.1.8 可空类型和运算符..... 124 5.1.9 空接合运算符..... ...

Global site tag (gtag.js) - Google Analytics