C#菜鸟问个小问题!

来源:百度知道 编辑:UC知道 时间:2024/09/23 17:18:34
class conversion
{
static void Main()
{
byte a = 100;
a =a+100;
//a+=100;
Console.WriteLine(a);
}
}
为什么用(a=a+100)会报错说是:无法将int类型隐式转换为byte.
而(a+=100)正确.

+操作符计算时如果左右两个操作数类型不一致,会强制把短的数据类型换成长的数据类型。在a + 100 这个式子中,a是byte, 100是立即数,相当于int。所以byte被转换成了int,整个加法的结果也是int。你用int型赋值给byte型当然会报错。写成a=(byte)(a+100); 就对了

数值100默认2为int型,所以这里你可以这样:a=a+(byte)100;

这里默认100是int类型, +=则是同类型转换