首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Int64 % Int32给出Int64结果

Int64 % Int32给出Int64结果
EN

Stack Overflow用户
提问于 2019-02-19 01:09:59
回答 2查看 92关注 0票数 0
代码语言:javascript
复制
long longVar = 100_000_000_000;
int intVar = int.MinValue;
long result = longVar % intVar;

在这个例子中,为什么结果应该很长?不能大于Int32.MaxValue,为什么在此操作中决定将余数设为Int64?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-19 01:17:04

根据C# specification,仅为整数类型预定义了以下余数运算符:

代码语言:javascript
复制
int operator %(int x, int y);
uint operator %(uint x, uint y);
long operator %(long x, long y);
ulong operator %(ulong x, ulong y);

因此,在本例中,编译器选择long(long, long)版本,并自动将intVar转换为long。则结果为long类型。

票数 4
EN

Stack Overflow用户

发布于 2019-02-19 01:26:49

因为在这种情况下,如果您尝试使用Int32,则可能是OverflowException(可能)。任何时刻都会被投射到更大的物体中。例如:

代码语言:javascript
复制
int firstNumber = 10;
long secondNumber = 100;
var result = firstNumber + secondNumber;

(result - long)如果你不相信我,你可以去看看。

这是由于自动转换为特定方法的参数类型造成的。在您的例子中,这是'%‘。在'+‘符号的情况下,您可以覆盖该语句,并指定此语句的您自己的实现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54752206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档