c# – int或uint或什么

c# – int或uint或什么,第1张

概述考虑一下 int i = 2147483647; var n = i + 3; i = n; Console.WriteLine(i); // prints -2147483646 (1) Console.WriteLine(n); // prints -2147483646 (2 考虑一下

int i = 2147483647;        var n = i + 3;        i = n;        Console.Writeline(i);           // prints -2147483646    (1)        Console.Writeline(n);           // prints -2147483646    (2)        Console.Writeline(n.GetType()); // prints system.int32   (3)

我对以下很困惑

(1) how Could int hold the value -2147483646 ? (int range = -2,147,483,648 to 2,647) (2) why does this print -2147483648 but not 2147483648 (compiler should
decIDe better type as int range
exceeds) (3) if it is converted somewhere,why n.GetType() gives system.int32
?

编辑1:做出更正:现在你将得到我正在获得的东西. (对不起)

var n = i + 1; to

var n = i + 3;

Edit2:还有一件事,如果它是溢出的,为什么不引发异常?

增加:当发生溢出时,为其设置类型是不正确的

var n

在语句中var n = i 3;相应的另一种类型?

欢迎你建议一个更好的头衔,因为这至少对我来说没有意义

谢谢

解决方法 更新:海报解决了他的问题.

1)这是预期的输出,因为你向int.MaxValue添加了3,导致溢出.在.NET中,默认情况下,这是一个合法的 *** 作,在未经检查的代码中给出负值的回绕,但是如果在代码周围添加一个选中的块,它将抛出一个OverflowException.

2)用var声明的变量的类型在编译时而不是运行时确定.添加两个Int32s的规则是提供Int32,而不是UInt32,Int64或其他东西.因此,即使在运行时您可以看到Int32的结果太大,它仍然必须返回Int32.

3)它没有转换为其他类型.

总结

以上是内存溢出为你收集整理的c# – int或uint或什么全部内容,希望文章能够帮你解决c# – int或uint或什么所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1224352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存