• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
悠
閒

博客园    首页       联系   管理    订阅  订阅
关于C#基本语法的一些注意事项
【最后更新:2009年9月15日】
一、关于强制转换:Convert 和 (int) 的区别
            Convert.ToInt32() 方法转换double类型的数据是“5舍6入”的。
            (int) 方法转换double类型的数据是只取小数点前面的整数。

例:下面几种转换方法运行后得到的结果是不同的                  
//第一种
int a = Convert.ToInt32(2.5);  //强制转换的结果为 2

//第二种
int a = Convert.ToInt32(2.6);  //强制转换的结果为 3

//第三种
int a = (int)(2.6);  //强制转换的结果为 2





二、 溢出检测
      在C#语言中,可以使用checked关键字进行溢出检测,与之对应的是unchecked关键字,将忽略溢出。
      以byte为例,byte即字节,一个字节有8位。在计算机中,所有的数据以二进制存储,每个位上存储的数据
非0即1,那么一个字节的数据存储的最大的二进制数据为 (11111111)2 ,将其进行二进制到十进制的转换,则
为255。也就是说,一个byte类型的数据不能大于255,大于255时将会发生溢出。
      使用checked关键字可以对程序中可能出现的溢出现象进行检测,用法如下:
      

//运行下面的代码时,将会抛出异常
byte b = 255;
checked
{
    b
++;
}

//如果不希望进行溢出检测,则可使用unchecked关键字,
//不会抛出异常,程序正常结束,运行结果为 0
byte b = 255;
unchecked
{
    b
++;
}

//注意:以下写法也不会抛出异常
//运行结果为 0
byte b = 255;
b
++;

      注意:本例得到一个不合理的等式,即 255 + 1 = 0。这是因为变量 b 进行自增运算后的二进制的值变为
(100000000)2 ,而byte类型只能有8位,因此将多出的一位抛弃,所以最后得到的结果为(00000000)2 其十进制
为 0,所以 b 的结果为 0。

posted on 2009-09-14 20:17  悠閒  阅读(408)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3