C#中byte类型运算

 首先看下面一段代码

1
2
3
byte  x = 1;
byte  y = 2;
byte  z = x + y; <br>Console.WriteLine(z);

可能很多人会说显示结果是3。

其实,这段代码无法运行,因为编译就不通过报错,错误原因:错误 1 无法将类型“int”隐式转换为“byte”。存在一个显式转换(是否缺少强制转换?) 

因为,byte类型之间运算会隐式转换成int类型,然后对int类型值进行运算,得到的结果是int类型,所以直接用byte类型变量保存结果会报错。实际上short和char类型相互运算操作也做这样的处理。之所这样设计,可能byte、short和char类型相互运算操作,数值可能会发生溢出错误,所以在运算的时候直接都转换为int来运算,达到强制结果用int类型保存。

如果认为运算后结果不会溢出的情况,可以显式保存结果

1
2
3
4
byte  x = 1;
byte  y = 2;
byte  z = ( byte )(x + y);
Console.WriteLine(z);

  

再看下面这段代码:

1
2
byte  z = 1 + 2;
Console.WriteLine(z);

在vs上编译和运行没问题的,结果是3。

1+2是常量运算,得到的就是3,然后赋值给z。

再看下面代码:

byte b = 127;
byte a = 2;
b =(byte)(b + a);
Console.WriteLine(b);
Console.ReadLine();

在vs上编译和运行没问题的,结果是129。

127+2是常量运算,得到的就是129,然后赋值给b。


再看下面这段代码:

byte b = 255;
byte a = 2;
b =(byte)(b + a);
Console.WriteLine(b);
Console.ReadLine();

在vs上编译和运行没问题的,结果是1。

byte的取值范围是0~255所以超过就会重头开始算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值