【发布时间】:2025-12-15 04:45:01
【问题描述】:
所以我有一个将两个整数相加并打印结果的代码:
Console.WriteLine("enter number: ");
int intTemp = Convert.ToInt32(Console.ReadLine());
long sum = intTemp + 5;
Console.WriteLine($"sum is : {sum}");
但是如果在控制台中我将最大值放入int类型,我不会得到异常,但结果是错误的,即使我将结果保存在一个long变量中。这是输出:
enter number:
2147483647
sum is : -2147483644
但是如果 sum 变量很长,为什么我会得到错误的结果?
【问题讨论】:
-
因为
intTemp + 5仍然是int,并且那么它被分配给long。您可以使用intTemp + 5L。应该有重复的,但我找不到。 -
add 运算符不知道(也不应该)在哪里你打算存储它的结果,它的类型或大小等。
-
如果你想看到它崩溃和烧毁,试试
long sum = checked(intTemp + 5);。添加两个ints 的结果仍然是int,即使您最终将其分配给long。 -
@Damien_The_Unbeliever 所以你说我在任何地方添加两个数字,为了 100% 确定我得到正确的结果,我需要将一个转换为 long(假设我将结果保存在一个长变量中)?
-
或
long intTemp = long.Parse(Console.ReadLine());