日期:2014-05-20  浏览次数:20764 次

为什么byte类型之间的值不能相加?
byte   i=1;
byte   j=2;
byte   k=i+j;
运行这样的程序会失败,为什么?而int相加就可以

------解决方案--------------------
以下赋值语句将产生一个编译错误,原因是赋值运算符右侧的算术表达式在默认情况下的计算结果为 int 类型。


// Error: conversion from int to byte:
byte z = x + y;

try..
若要解决此问题,请使用强制转换:

// OK: explicit conversion:
byte z = (byte)(x + y);


------解决方案--------------------
那就要问C#了,long之间的+肯定是被运算符重载了,byte之间没有。
------解决方案--------------------
TO:那如果是long+long呢,为什么表达式的计算结果默认不是int?

long +long 的计算结果默认为long..

至于为什么byte+byte=int,还真得去问微软了..

除byte之外,还有short+short表达式的计算结果默认也是int..

知道就行了,没有必要死抠..

个人意见,仅供参考..