如果byte + byte = int为什么int + int不是short / long?在C#中

拉加夫·文卡特
byte num1 = 5;
byte num2 = 6;

byte res = num1 + num2; 
//Adding bytes asks for a explicit cast to int - "Cannot Implicitly Convert 'int' to 'byte'

这可以通过假设算术运算导致溢出的情况来证明。因此,如果要成为事实,那么int呢?

int num1 = 2;
int num2 = 4;

int res = num1 + num2;
// This works, but when we take the previous assumption to consideration here
// here int may also lead to overflow right 

因此,这还应该正确抛出强制转换错误,它应该请求很长时间,并且链条继续正确吗?

已经有另一个与此类似的stackoverflow问题,但它没有回答这个问题。字节+字节=整数...为什么?

帕特里克·史蒂文斯(Patrick Stevens)

仅仅因为它“可以被证明是这样”,并不意味着那是原因。

埃里克·利珀特(Eric Lippert)在您链接的问题的评论中对此很清楚:

下面的各种思路是设计考虑因素的合理近似值。更笼统地说:我不认为字节是“数字”。我认为它们是位的模式,可以解释为数字,字符,颜色或其他任何形式。如果要对它们进行数学运算并将其视为数字,则将结果移入更通常解释为数字的数据类型是有意义的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么Java API使用int而不是short或byte?

为什么默认为“ int”而不是“ byte”?

为什么标准库bufio.Read(p [] byte)(int,err)在Go中检查len(p)而不是cap(p)

在 C# 中将 byte[,] 转换为 int[]

为什么'(int)(char)(byte)-2'在Java中产生65534?

为什么显式类型转换需要从double到float而不是从int到byte?

从int转换回byte

为什么我们应该使用 OutputStream.write(byte[] b, int off, int len) 而不是 OutputStream.write(byte[] b)?

在Java中从byte转换为int

C#int转换为byte []

C ++:从vector <byte>的任何位置获取int

如果我使用byte而不是int,我的循环会更快地迭代吗?

在Java中,使用byte或short代替int和float代替double效率更高吗?

C# 将 ReadOnlyCollection<int> 转换为 byte[] 数组

将BYTE数组转换为unsigned long long int

内存浪费?如果main()应该只返回0或1,为什么main是用int而不是short int甚至char声明的?

无法从int转换为byte

Java编译器通过`(byte)+(char)-(int)+(long)-1`解释什么?

write(byte [],int,int)方法如何工作?

在运行中,为什么用[] int而不是int []?

不兼容的类型。找到:“java.lang.Enum”,需要:“char、byte、short、int、Character、Byte、Short、Integer、String 或枚举”

C ++ | 将int转换为byte [4],反之亦然

将list <byte [],int>转换为list <byte []>

为什么 *int 与 go 中的 []int 不同

如果Java方法的返回类型为int,则该方法可以返回类型为byte的值吗?

为什么short原语类型比long或int显着慢?

在C ++中,如果“ int a = 3; int * p =&a;”,那么为什么不允许“ const int *&pp = p”,而允许“ const int * const&pp = p”?

如何将int []转换为byte []

从Span <byte>获取Int32