gpt4 book ai didi

c# - 将 int 与 long 结果相乘 c#

转载 作者:太空狗 更新时间:2023-10-30 00:31:16 25 4
gpt4 key购买 nike

想知道为什么。 C#.Net 3.5

int a = 256 * 1024 * 1024;
int b = 8;
long c = b * a;
Console.WriteLine(c);//<-- result is -2147483648

这个负号从哪里来?

最佳答案

Where does this minus from?

来自整数溢出。请注意,您的代码等效于:

int a = 256 * 1024 * 1024;
int b = 8;
int tmp = b * a;
long c = tmp;
Console.WriteLine(c);

我已经将乘法从对 long 变量的赋值中分离出来,以强调它们确实是独立的运算 - 乘法是使用 Int32 算术执行的,因为两者操作数是 Int32 - 之后将结果分配给 Int64 的事实无关紧要。

如果您想在 64 位算术中执行乘法,您应该将其中一个操作数转换为 long(即 Int64):

int a = 256 * 1024 * 1024;
int b = 8;
long c = b * (long) a;
Console.WriteLine(c); // 2147483648

(将哪个操作数转换为 long 并不重要 - 另一个将隐式转换为 long。)

关于c# - 将 int 与 long 结果相乘 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28155522/

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