c# – int或uint或什么
发布时间:2020-12-15 19:34:53 所属栏目:百科 来源:网络整理
导读:考虑一下 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
考虑一下
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:做出更正:现在你将得到我正在获得的东西. (对不起)
Edit2:还有一件事,如果它是溢出的,为什么不引发异常? 增加:当发生溢出时,为其设置类型是不正确的
在语句中var n = i 3;相应的另一种类型? 欢迎你建议一个更好的头衔,因为这至少对我来说没有意义 谢谢 解决方法
更新:海报解决了他的问题.
1)这是预期的输出,因为你向int.MaxValue添加了3,导致溢出.在.NET中,默认情况下,这是一个合法的操作,在未经检查的代码中给出负值的回绕,但是如果在代码周围添加一个选中的块,它将抛出一个OverflowException. 2)用var声明的变量的类型在编译时而不是运行时确定.添加两个Int32s的规则是提供Int32,而不是UInt32,Int64或其他东西.因此,即使在运行时您可以看到Int32的结果太大,它仍然必须返回Int32. 3)它没有转换为其他类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |