使用checked和unchecked来对整数溢出进行检测和忽略
2024-08-30 23:46:47
在C#中,整数int32的取值为-2147483648~2147473647(可以通过int.MaxValue和int.MinValue获得)当超出这个范围后,编译器不会进行检查,仍然会进行运算,但得到的结果是错误的。所以,有的时候使用checked进行整数溢出的检测。也可以通过unchecked进行,检测的忽略。 checked和unchecked有两种写法:
- 对单独的一个算术表达式进行检测:
int max = int.MaxValue;
int willThrow = checked(max++);
对于++,+=等算术运算符都是可用的,但需要一个变量来进行返回值的接收。
- 对一个语句块进行检测:
int max = int.MaxValue;
checked{
max++;
}
check和unchecked的一些特性:
1. 只能对整数进行操作,所以除了int和long之外的类型变量不可以使用
2. 当对语句块进行检测的时候,只有包含在语句块中的代码才会对其进行检测。语句块中调用的方法就不会被检测。
除了使用关键字进行整数溢出的检测,还可以开启系统内的编辑器选项来进行全局的检测设置:
- 选中项目,右键菜单中点击属性
- 选中页签Build,点击右下角Advanced
- 然后在弹出的面板中,勾选检测选项就可以实现全局的溢出检测了
最新文章
- iOS通知
- 5天玩转C#并行和多线程编程 —— 第二天 并行集合和PLinq
- jQuery Mobile 移动开发中的日期插件Mobiscroll使用说明
- cakePHP的controller回调
- [操作系统实验lab2]实验报告
- Linux之Sed命令详解(总结一些实用例子)
- 010-python基础-数据类型-字符串操作
- OPENGL画图类库
- PDF模板报表导出(Java+Acrobat+itext)
- Activity 【生命周期】
- div整体布局分析
- AllocateHWnd的作用,以及它在控件里的使用
- 定时器Timer不定时
- 利用wsdl.exe自动将wsdl文档转换为C#代码
- Rsync + Lsyncd服务实现文件实时同步/备份
- Linux 小知识翻译 - 「邮件服务器」
- 洛谷P2918 [USACO08NOV]买干草(一道完全背包模板题)
- java之搭建webservice服务端
- msvc命令行cl编译c程序问题及解决
- JavaScript使用浏览器内置XML解析器解析DOM对象
热门文章
- mybatis分页未明确的列定义
- 关于github报错 ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository.
- laravel常用响应操作
- 调用WebService接口返回字符串
- python中导包简介
- Mac出现程序闪退的解决方案
- MySQL安装及基础命令
- ie中兼容性问题
- solr系列之solr-5.5.5 window单机版默认Jetty安装
- Leetcode题目104.二叉树的最大深度(DFS+BFS简单)