簡體   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