C#难点逐个击破(7):checked与unchecked

c#默认情况下,若常数表达式的值超过了目标类型的最大值,将会导致编译错误。

119.png

若目标数据类型不能容纳非常数表达式的数据,那么数据在赋值时会被截断。

class Program { static void Main(string[] args) { int n = int.MaxValue;//n=2147483647 n = n + 1; System.Console.WriteLine(n); } }

登录后复制

120.png

此时可用内存存储数据来解释,之前int.MaxValue在内存为为32位1,自加1后变为32位0,此时0被认为是负号,因此会得来-2147483648。

将上述代码放在checked块中,将会引发System.OverflowException类型。

class Program { static void Main(string[] args) { checked { int m = int.MaxValue; m = m + 1; System.Console.WriteLine(m); } } }

登录后复制

121.png

C#中放在checked块内的变量,若运行时发生一次溢出的赋值就会引发一个异常。

unchecked用于取消整型算术运算和转换的溢出检查。

 以上就是C#难点逐个击破(7):checked与unchecked的内容,更多相关内容请关注PHP中文网(www.php.cn)!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2553745.html

(0)
上一篇 2025年3月6日 06:48:52
下一篇 2025年2月26日 11:04:52

AD推荐 黄金广告位招租... 更多推荐

发表回复

登录后才能评论