gpt4 book ai didi

c# - 为什么模运算符 (%) 结果在 C# 中隐式转换到左侧而不是右侧?

转载 作者:行者123 更新时间:2023-11-30 15:08:55 25 4
gpt4 key购买 nike

采用以下代码:

long longInteger = 42;
int normalInteger = 23;
object rem = longInteger % normalInteger;

如果 remlongInteger/normalInteger 的余数,余数不应该总是以较小的“int”(除数)为界吗?然而在 C# 中,上述代码导致 rem 成为 long

rem 转换为 int 而不丢失任何数据是否安全?

int remainder = Convert.ToInt32(rem);

最佳答案

没有采用longint 的模运算符重载,因此int 将被转换为 long 来匹配另一个操作数。

往下看,在CPU中并没有单独的求模指令,它只是除法运算的结果之一。运算的输出是除法的结果,也是提醒。两者大小相同,所以除法的结果必须是一个long,所以提醒。

由于提醒必须小于除数,因此当除数来自 int 时,您可以安全地将结果转换为 int

关于c# - 为什么模运算符 (%) 结果在 C# 中隐式转换到左侧而不是右侧?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5036592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com