繁体   English   中英

用于C#的Visual Studio调试器的乘法问题

[英]Multiplication issue with Visual Studio debugger for C#

如果我在C#调试器的监视窗口中输入174 * 256 * 256 * 256,结果是
-1375731712。 我认为它与256有关,但我很感激一点指导。

谢谢!!

不,与256无关。这只是乘法的结果大于最大可能的有符号32位整数,所以你得到了溢出。

试试这个:

174L * 256L * 256L * 256L

这些是64位整数文字。

它执行unchecked溢出(因此溢出无错误)。 想象如下:Int32.MaxValue + 1 == Int32.MinValue,但有乘法。

这解释了如何在内存http://en.wikipedia.org/wiki/Two's_complement中表示int

尝试输入:

174 * 256 * 256 * 256f

所以结果不会被转换为整数,而是浮动。

您正面临整数溢出。 如果你想在没有限制的情况下使用大数字(当然除了可用内存),你可以使用System.Numerics.BigInteger 在你的特殊情况下, long也可以(64位整数)

你正在溢出整数。 实际答案是2,919,235,584,但只有2,147,483,647可以表示为有符号整数。 考虑一个unsigned int(uint),一个long,一个ulong,或者如果它不够大。 对于监视窗口,您可能需要转换第一个参数或使用后缀,例如174L * 256L * 256L * 256L

这是一个简单的溢出。 尝试在观察窗口中输入:

(uint)(174 * 256 * 256 * 256)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM